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