Project

General

Profile

Actions

Bug #17607

closed

ChildProcess vs RUBY_PIPE_NONBLOCK_DEFAULT

Added by vo.x (Vit Ondruch) about 3 years ago. Updated over 2 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
[ruby-core:102391]

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

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0