Project

General

Profile

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.

Added by ioquatix (Samuel Williams) about 1 year ago. Updated about 1 year ago.

Status:
Closed
Target version:
-
ruby -v:
Backport:
[ruby-core:119124]

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

Also available in: PDF Atom