[#53944] [ruby-trunk - Bug #8210][Open] Multibyte character interfering with end-line character within a regex — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

14 messages 2013/04/03

[#53974] [ruby-trunk - Feature #8215][Open] Support accessing Fiber-locals and backtraces for a Fiber — "halorgium (Tim Carey-Smith)" <ruby-lang-bugs@...>

14 messages 2013/04/03

[#54095] [ruby-trunk - Feature #8237][Open] Logical method chaining via inferred receiver — "wardrop (Tom Wardrop)" <tom@...>

34 messages 2013/04/08

[#54138] [ruby-trunk - Bug #8241][Open] If uri host-part has underscore ( '_' ), 'URI#parse' raise 'URI::InvalidURIError' — "neocoin (Sangmin Ryu)" <neocoin@...>

9 messages 2013/04/09

[#54185] [CommonRuby - Feature #8257][Open] Exception#cause to carry originating exception along with new one — "headius (Charles Nutter)" <headius@...>

43 messages 2013/04/11

[#54196] Encouraging use of CommonRuby — Charles Oliver Nutter <headius@...>

I think we need to do more to encourage the use of the CommonRuby

20 messages 2013/04/11
[#54200] Re: Encouraging use of CommonRuby — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2013/04/11

Hi,

[#54211] Re: Encouraging use of CommonRuby — "NARUSE, Yui" <naruse@...> 2013/04/12

As far as I understand, what is CommonRuby and the process over CommonRuby

[#54215] Re: Encouraging use of CommonRuby — Charles Oliver Nutter <headius@...> 2013/04/12

On Thu, Apr 11, 2013 at 11:25 PM, NARUSE, Yui <naruse@airemix.jp> wrote:

[#54207] [CommonRuby - Feature #8258][Open] Dir#escape_glob — "steveklabnik (Steve Klabnik)" <steve@...>

15 messages 2013/04/12

[#54218] [CommonRuby - Feature #8259][Open] Atomic attributes accessors — "funny_falcon (Yura Sokolov)" <funny.falcon@...>

43 messages 2013/04/12

[#54288] [CommonRuby - Feature #8271][Open] Proposal for moving to a more visible, formal process for feature requests — "headius (Charles Nutter)" <headius@...>

15 messages 2013/04/15

[#54333] Requesting Commit Access — Aman Gupta <ruby@...1.net>

Hello ruby-core,

16 messages 2013/04/16

[#54473] [Backport 200 - Backport #8299][Open] Minor error in float parsing — "bobjalex (Bob Alexander)" <bobjalex@...>

27 messages 2013/04/19

[#54532] [ruby-trunk - Bug #8315][Open] mkmf does not include include paths from pkg_config anymore — "Hanmac (Hans Mackowiak)" <hanmac@...>

11 messages 2013/04/23

[#54621] [ruby-trunk - Feature #8339][Open] Introducing Geneartional Garbage Collection for CRuby/MRI — "ko1 (Koichi Sasada)" <redmine@...>

43 messages 2013/04/27
[#54643] [ruby-trunk - Feature #8339] Introducing Geneartional Garbage Collection for CRuby/MRI — "authorNari (Narihiro Nakamura)" <authorNari@...> 2013/04/28

[#54649] Re: [ruby-trunk - Feature #8339] Introducing Geneartional Garbage Collection for CRuby/MRI — SASADA Koichi <ko1@...> 2013/04/28

(2013/04/28 9:23), authorNari (Narihiro Nakamura) wrote:

[#54657] Re: [ruby-trunk - Feature #8339][Open] Introducing Geneartional Garbage Collection for CRuby/MRI — Magnus Holm <judofyr@...> 2013/04/28

On Sat, Apr 27, 2013 at 8:19 PM, ko1 (Koichi Sasada)

[#54665] [ruby-trunk - Bug #8344][Open] Status of Psych and Syck — "Eregon (Benoit Daloze)" <redmine@...>

18 messages 2013/04/28

[ruby-core:54082] [ruby-trunk - Bug #5463][Feedback] PTY or IO.select timing issue results in no EOF

From: "akr (Akira Tanaka)" <akr@...>
Date: 2013-04-07 12:42:39 UTC
List: ruby-core #54082
Issue #5463 has been updated by akr (Akira Tanaka).

Status changed from Assigned to Feedback

I tried to reproduce the problem on Debian GNU/Linux and FreeBSD.  (I don't have Mac OS X.)
It is possible but very rare.

However the problem is occur more frequently if I run different heavy task on the host.

So, I guess the problem is just a "3 seconds is not enough".
It is possible that OS runs the child process very slowly if the host is very busy.

Is there an evidence that this problem is actually the problem of Ruby?
----------------------------------------
Bug #5463: PTY or IO.select timing issue results in no EOF 
https://bugs.ruby-lang.org/issues/5463#change-38331

Author: thinkerbot (Simon Chiang)
Status: Feedback
Priority: Normal
Assignee: akr (Akira Tanaka)
Category: ext
Target version: 
ruby -v: 1.9.2p290 


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



-- 
http://bugs.ruby-lang.org/

In This Thread