[ruby-list:49616] Re: IO.popen の不審な挙動を再現するサンプルコード
From:
尾川敏也 <ogw@...>
Date:
2013-09-29 01:26:15 UTC
List:
ruby-list #49616
尾川です。
コメントありがとうございました。
中田さん wrote:
> これはrubyのバグです。できれば、trunkでも試してみてください。
そうでしたか。事態がはっきりして、少しほっとしました。
実は trunk というのは何のことか判らなかったのですが、"Ruby trunk"
でググッて見つけた
https://www.ruby-lang.org/en/community/ruby-core/
を参考にして、
svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_2_0_0
でソースを取り込み arton さんの 「Ruby 環境構築講座 Windows 編」を
参考にして bison と sed を入れてビルドしました。
OS は Windows XP で、ruby -v の結果は
前回: ruby 2.0.0p247 (2013-06-27 revision 41674) [i386-mswin32_100]
今回: ruby 2.0.0p322 (2013-09-28) [i386-mswin32_100]
です。
もしもコメント頂いた趣旨と違うようでしたら、正しい方法を教えて頂け
ればトライし直してみたいと思います。
以下は、上記のようにビルドしなおした(多分)最新版で、昨日と同じよう
なテストをしてみた結果です。
IO.popen を使って、外部コマンドは C で書いたものを使っています。
まず、データの行数が 3000 行のときの結果は:
----------- 11 / 100 ---------
----------- 12 / 100 ---------
----------- 13 / 100 ---------
----------- 14 / 100 ---------
external: too less field (3 for 6) at line 2784
----------- 15 / 100 ---------
----------- 16 / 100 ---------
external: too less field (3 for 6) at line 2784
----------- 17 / 100 ---------
external: too less field (3 for 6) at line 2784
----------- 18 / 100 ---------
----------- 19 / 100 ---------
----------- 20 / 100 ---------
(同じ調子で、最後の 100 / 100 まで実行)
でした。
次に、データの行数を 4000 行に変更しました。昨日の例では、[BUG] segmentation
fault と表示された条件です。
----------- 26 / 100 ---------
----------- 27 / 100 ---------
----------- 28 / 100 ---------
----------- 29 / 100 ---------
----------- 30 / 100 ---------
----------- 31 / 100 ---------
external: too less field (5 for 6) at line 79
C:/ogw/ruby/use_iopopen.rb:6:in `close_write': closed stream (IOError)
from C:/ogw/ruby/use_iopopen.rb:6:in `block (2 levels) in |'
(ここで終了)
という結果でした。
どうやら、最新版でも状況は変わっていないように見えます。
以上です。
--
尾川敏也 ogw@shizuokanet.ne.jp
http://www6.shizuokanet.ne.jp/ogw/