From: Takahiro Kambe Date: 2010-01-14T20:27:02+09:00 Subject: [ruby-dev:40088] Re: [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 こんばんは。 In message <20100114110333.E89D435D87E@mta1.nttr.co.jp> on Thu, 14 Jan 2010 20:03:41 +0900, f-miura@nttr.co.jp (MIURA, Fumiaki) wrote: > NTTレゾナントの三浦です。不完全なpatchを書いてすみません。 あのパッチが、調べるとっかかりになりました。たいへん、助かってますので 謝らないでください。(感謝、感激に近い状態で、ほんとうにありがとうござい ます。) >> [ruby-dev:40051]にて対策が提案されていますが、これを適用しても上記の状況は >> 解消されないため、先に挙げた問題は発生しなくなるケースもありましたが、完全 >> には解決しませんでした。 あ、この辺りの書き方にトゲがあるように読み取れますな、すんません。 >> patch-1 >> 子プロセスの方で pthread関係の関数の呼び出しを止めるようにしたもの > > 「#if defined(__NetBSD__)」でも(rb_thread_start_timer()経由)で > pthread_cond_wait()を呼び出してるみたいですが、こいつも追い出すべきで > はないですか? > 勘違い? 取り敢えず、 1. 2回目のバッククォートの展開での子プロセス 2. Net::HTTPを使っただけのつもりのプロセス で、thread_timer()から脱出できなくなる問題が解決するところまで確認した 状況で、全部のパターンを追えたというわけではありません。つまり、 > それと、fork()して作られた子供のrubyはruby threadを作れない、あるいは > 作れても動作は異なるということでしょうか? といったケースはテストも何もしていませんねぇ。 -- 神戸 隆博 / Takahiro Kambe P.S. 1.9とかならともかく、1.8.7でまっとうに動かなくなったのは、かなりのショッ クでした。