ワナベと申します。 Mingw 上の trunkで、test/ruby/test_io.rb の test_dup のように パイプを最大まで作成してIOオブジェクトの dup を繰り返したとき 処理がブロックしてしまいました。 環境は WinXP SP2 に cygwin 上のmingw-runtime 3.14-1 です。 $ ./ruby -ve ' a = [] loop{a.push IO.pipe} rescue nil loop {a.push(p a[0][0].dup)}' ruby 1.9.0 (2008-07-11 revision 18016) [i386-mingw32] #<IO:0xbae4c0> # ここで処理が止まる また cygwin でどうなるか試したところ、SEGV になってしまいました。 $ ./ruby -ve ' a = [] loop{a.push IO.pipe} rescue nil loop {a.push(p a[0][0].dup)}' ruby 1.9.0 (2008-07-11 revision 18016) [i386-cygwin] -e:1: [BUG] Segmentation fault ruby 1.9.0 (2008-07-11 revision 18016) [i386-cygwin] -- control frame ---------- c:0007 p:---- s:0018 b:0018 l:000017 d:000017 CFUNC :pipe c:0006 p:0016 s:0015 b:0014 l:000008 d:000013 BLOCK -e:1 c:0005 p:---- s:0014 b:0014 l:000013 d:000013 FINISH :initialize c:0004 p:---- s:0012 b:0012 l:000011 d:000011 CFUNC :loop c:0003 p:0031 s:0009 b:0009 l:000008 d:000008 TOP -e:1 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH :private_class_method c:0001 p:0000 s:0002 b:0002 l:000001 d:000001 TOP <dummy toplevel>:19 --------------------------- DBG> : "-e:1:in `pipe'" DBG> : "-e:1:in `block in <main>'" DBG> : "-e:1:in `loop'" DBG> : "-e:1:in `<main>'" Aborted (core dumped) どうやらそれぞれCの dup 関数、_pipe 関数でブロック/SEGV しているようです。 MSWin(VC2008EE)では正しく動作したので Windows の問題ではないようですし 標準関数で問題が起きているので ruby の実装の問題でもない気がします。 # 手元の環境が腐ってるだけのような気もするのですが、cygwin のインストーラに # 従ってインストールしただけですし… 同様の現象に遭遇した方はいらっしゃらないでしょうか。 また、何が原因と考えられるでしょうか。 よろしければどなたかご助力をお願いします。 -- ワナベ