[#102652] [Ruby master Bug#17664] Behavior of sockets changed in Ruby 3.0 to non-blocking — ciconia@...
Issue #17664 has been reported by ciconia (Sharon Rosner).
23 messages
2021/02/28
[ruby-core:102508] [Ruby master Bug#17607] ChildProcess vs RUBY_PIPE_NONBLOCK_DEFAULT
From:
v.ondruch@...
Date:
2021-02-15 20:36:26 UTC
List:
ruby-core #102508
Issue #17607 has been updated by vo.x (Vit Ondruch).
Status changed from Closed to Open
Sorry for chaos, but this is real issue. I was confused for a while, because I forgot to add the `CHILDPROCESS_POSIX_SPAWN=true` to the childprocess test suite to exercise the specific branch. More details is in the chidlprocess [ticket](https://github.com/enkessler/childprocess/issues/173).
----------------------------------------
Bug #17607: ChildProcess vs RUBY_PIPE_NONBLOCK_DEFAULT
https://bugs.ruby-lang.org/issues/17607#change-90402
* Author: vo.x (Vit Ondruch)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
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 commit: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.
[1]: https://github.com/enkessler/childprocess/issues/173
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>