Actions
Bug #17607
closedChildProcess vs RUBY_PIPE_NONBLOCK_DEFAULT
    Bug #17607:
    ChildProcess vs RUBY_PIPE_NONBLOCK_DEFAULT
  
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
Description
I am investigating why ChildProcess test suite fails running against Ruby 3.0 1. The current failure is:
  1) ChildProcess can write to stdin interactively if duplex = true
     Failure/Error: raise msg
     
     RuntimeError:
       timed out after 10 seconds:
       expected "hello\ncat: -: Resource temporarily unavailable\n" to match /\Ahello\r?\n\z/m
       Diff:
       @@ -1,2 +1,3 @@
       -/\Ahello\r?\n\z/m
       +hello
       +cat: -: Resource temporarily unavailable
       
     # ./spec/spec_helper.rb:197:in `wait_until'
     # ./spec/io_spec.rb:121:in `block (2 levels) in <top (required)>'
and as far as I can tell, the issue is that RUBY_PIPE_NONBLOCK_DEFAULT in io.c, which was 0, was changed to O_NONBLOCK in 0e3b0fcdba70cf96a8e0654eb8f50aacb8024bd4. I have tried to replace the O_NONBLOCK by 0 and the test succeeded. Unfortunately, other test case started to fail then. I am not really sure what might be the right fix.
This might have also reintroduced the #15356.
Actions