[#62297] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap. — Eric Wong <normalperson@...>
nari@ruby-lang.org wrote:
7 messages
2014/05/02
[#62307] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap.
— SASADA Koichi <ko1@...>
2014/05/03
(2014/05/03 4:41), Eric Wong wrote:
[#62402] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap.
— Eric Wong <normalperson@...>
2014/05/05
SASADA Koichi <ko1@atdot.net> wrote:
[#62523] [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan — ko1@...
Issue #9632 has been updated by Koichi Sasada.
3 messages
2014/05/11
[#62556] doxygen (Re: Re: [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan) — Tanaka Akira <akr@...>
2014-05-11 8:50 GMT+09:00 Eric Wong <normalperson@yhbt.net>:
3 messages
2014/05/13
[#62727] [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl — Eric Wong <normalperson@...>
rb_unlink_method_entry may cause old_me to be swept before the new
7 messages
2014/05/24
[#63039] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— SASADA Koichi <ko1@...>
2014/06/10
Hi,
[#63077] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— Eric Wong <normalperson@...>
2014/06/10
SASADA Koichi <ko1@atdot.net> wrote:
[#63086] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— SASADA Koichi <ko1@...>
2014/06/11
(2014/06/11 4:47), Eric Wong wrote:
[#63087] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— Eric Wong <normalperson@...>
2014/06/11
SASADA Koichi <ko1@atdot.net> wrote:
[#62862] [RFC] README.EXT: document rb_gc_register_mark_object — Eric Wong <normalperson@...>
Any comment on officially supporting this as part of the C API?
5 messages
2014/05/30
[ruby-core:62398] [ruby-trunk - Bug #5463] [Rejected] PTY or IO.select timing issue results in no EOF
From:
akr@...
Date:
2014-05-05 17:21:00 UTC
List:
ruby-core #62398
Issue #5463 has been updated by Akira Tanaka.
Status changed from Feedback to Rejected
I think this is not a problem of Ruby.
----------------------------------------
Bug #5463: PTY or IO.select timing issue results in no EOF
https://bugs.ruby-lang.org/issues/5463#change-46555
* Author: Simon Chiang
* Status: Rejected
* Priority: Normal
* Assignee: Akira Tanaka
* Category: ext
* Target version:
* ruby -v: 1.9.2p290
* Backport:
----------------------------------------
I have observed that when running a shell through PTY the slave will sometimes fail to produce an EOF after an exit command. As a result polling via IO.select can timeout. A full example is attached. This is a simplified example illustrating the problematic loop:
# PTY.spawn ...
master.write "exit 8\n"
str = ''
while true
unless IO.select([slave],nil,nil,3)
raise "timeout waiting for slave EOF"
end
if slave.eof?
break
end
str << slave.read(1)
end
After 'exit' is written to master, the loop normally reads all of slave into str. The select ensures the loop can timeout but under normal circumstances it will not (3 seconds is plenty of time to exit a shell). The bug is that it occasionally does timeout having never seen an EOF - meaning either the select is not detecting EOF on the slave or an EOF is not being written to the slave.
The bizarre thing is that I can confirm after the timeout that the pty process does exit with the correct status (8) regardless of whether the loop exits normally with an EOF or by timeout.
I'm not sure if this is an issue with the PTY implementation, an issue with the shell, or with the OS. I have observed the bug repeatedly using 1.9.2 on OS X 10.6.8, Ubuntu 11.04, and SLES 10, and with shells bash, ksh, csh, zsh (although mostly with bash). I suspect the PTY implementation plays some role because the bug does not appear to occur on 1.8.7 and 1.8.6. However the frequency of the bug varies so much across OS and shell, I know it could very well be an issue outside of ruby.
To reproduce, run the pty_fail.rb script for 10k (or more) iterations. On OS X it usually crops up within 10k. On Ubuntu 11.04 it is very, very rare, ~100k may be needed. Ex:
ruby pty_no_eof_example.rb 10000 /bin/bash
---Files--------------------------------
pty_fail.rb (2.97 KB)
pty_fail.rb (2.29 KB)
--
https://bugs.ruby-lang.org/