[ruby-list:49634] Re: IO.popen の不審な挙動を再現するサンプルコード

From: 尾川敏也 <ogw@...>
Date: 2013-10-06 02:32:55 UTC
List: ruby-list #49634
尾川です。

尾川敏也 <ogw@shizuokanet.ne.jp> wrote:
> (3) 私の手元のマシンのスペックが Windows と Ubuntu で異なり、タイミ
>     ングに起因する現象が起きやすかったり起きにくかったりしている。

この件に関連して、それなら遅いマシン上の Linux ではどうなのだろうか
と考えていて、8 年ほど前に購入してここ数年電源も入れずホコリを被っ
ている Linux マシンがあることを思いだして試してみました。

結局、あまり役に立ちそうな結果は得られなかったのですが、一応報告さ
せて頂きます。

    Pentium M 1.7 GHz メモリ 1 GB
    OS : Vine Linux 3.2

です。

以下に、判ったことを記します。

この Vine Linux には Ruby 1.9.1 が入っていました。まず最初にこの Ruby
で例の test.rb をしてみたところ、何も問題無く実行できました。

もっとも、例のメソッドチェーンを実行した回数は全部あわせて数千回程
度で、外部コマンドからのエラーメッセージが出ないだけではなく、そも
そも 'close_write': closed stream (IOError) も再現しませんでしたの
で、テストとしては十分では無い可能性は否定できません。

次に、r43149 はビルドできませんでした。正確には以下のとおりです。

Vine の autoconf のバージョンが古すぎて使えなかったので、先の Ubuntu
で autoconf して出来ていた configure をそのまま使いました。(仕組み
がよく判っていないので、こういう事をしていいものかどうかもよく判り
ません。)

その後、make するとそれらしいバイナリはできるのですが、make check 
では大量のエラーが生じて、途中で止まりました。

少しだけ気になったのは、make の最中に、これまで Windows や Ubuntu 
では見かけなかった(ような気がする)、以下のような warning が出て
いたことです。

    compiling io.c
    io.c: 関数 `copy_stream_body' 内:
    io.c:10262: 警告: `dst_io' might be used uninitialized in this function

    compiling signal.c
    signal.c:458: 警告: redefinition of `sighandler_t'
    /usr/include/signal.h:192: 警告: `sighandler_t' previously declared here

io.c とか signal.c とか、今回の件に関係があってもおかしく無さそうな
名前ですし、、、。

もっとも、そもそもまともにビルドできない状況でどうこう言うものでは
ないとも思いますが。

以上です。


-- 
尾川敏也 ogw@shizuokanet.ne.jp
http://www6.shizuokanet.ne.jp/ogw/

In This Thread