Actions
Bug #20723
closed`IO#close` is broken on Ruby 3.3+ when using the Fiber scheduler.
    Bug #20723:
    `IO#close` is broken on Ruby 3.3+ when using the Fiber scheduler.
  
Description
The following program seems to work okay on Ruby 3.2 but hangs on Ruby 3.3:
#!/usr/bin/env ruby
require 'bundler/inline'
gemfile do
  source 'https://rubygems.org'
  gem 'async'
end
require 'socket'
def close_while_reading(io)
  thread = Thread.new do
    Thread.current.report_on_exception = false
    io.wait_readable
  end
  
  # Wait until the thread is blocked on read:
  Thread.pass until thread.status == "sleep"
  
  Async do
    io.close
  end
  
  thread.join
end
begin
  client, server = Socket.pair(:UNIX, :STREAM)
  close_while_reading(client)
rescue => error
  $stderr.puts error.full_message
end
  
Actions