Bug #15367
IO.select is not resumed when io-object gets closed
Description
Here is sample code:
rp, wp = IO.pipe
t2 = Thread.new { IO.select([rp]) }
# This also does not work:
# t2 = Thread.new { IO.select([rp], nil, [rp]) }
sleep 0.01
rp.close
t2
# => #<Thread:0x00000000089b6ce0@(pry):51 sleep>
It happens only on linux, tested with 2.5.1, 2.6.0-preview2. On macOS it gives error, as expected:
#<Thread:0x00007fab3aebce58@(pry):5 run> terminated with exception (report_on_exception is true): Traceback (most recent call last): 1: from (pry):5:in `block in <main>' (pry):5:in `select': Bad file descriptor (Errno::EBADF) > t2 => #<Thread:0x00007fab3aebce58@(pry):5 dead>