[ruby-core:119704] [Ruby master Bug#20723] `IO#close` is broken on Ruby 3.3+ when using the Fiber scheduler.
From:
"k0kubun (Takashi Kokubun) via ruby-core" <ruby-core@...>
Date:
2024-11-04 22:23:23 UTC
List:
ruby-core #119704
Issue #20723 has been updated by k0kubun (Takashi Kokubun).
Backport changed from 3.3: REQUIRED to 3.3: DONE
ruby_3_3 commit:5b6009870dff883a8e71a05e60f175cea1d00d55.
----------------------------------------
Bug #20723: `IO#close` is broken on Ruby 3.3+ when using the Fiber scheduler.
https://bugs.ruby-lang.org/issues/20723#change-110367
* Author: ioquatix (Samuel Williams)
* Status: Closed
* Assignee: kjtsanaktsidis (KJ Tsanaktsidis)
* Backport: 3.3: DONE
----------------------------------------
The following program seems to work okay on Ruby 3.2 but hangs on Ruby 3.3:
```ruby
#!/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
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/