From: Takahiro Kambe Date: 2010-01-15T23:16:10+09:00 Subject: [ruby-dev:40106] Re: [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 In message <20100115164916.6ED8.A69D9226@jp.fujitsu.com> on Fri, 15 Jan 2010 17:23:52 +0900, KOSAKI Motohiro wrote: >> というわけで、3.はともかく1.や2.は修正しないとまずいだろうというのが >> 私の要望です。 > > 三浦さんと同じく2の必要性に疑問が・・・ > (根拠も同じです) execするんだから要らないような気はしてたのですが、既存のコードが律儀に 行っているように見えたことと、exec()失敗した後に続ける場合を念頭に置い てました。 田中さんによると、Mac OSのように必要な環境もあるということのようですね。 >> o 明らかにpthread(3)関係の関数呼び出しはまずい。 >> o 間接的にpthread関係の関数呼び出しもまずい。 >> o 非同期シグナルに対して安全でない関数でも、pthreadのデータ構造等に >> 直接関与しなければ案外大丈夫かもしれない。 > > ええと、一般論の話をするならlibcレベルでもreentrantじゃないけどスレッ > ドセーフな関数は > わりと一杯あって、それは要するに内部でpthread_mutexかそれに類似したロックを > 取っているということで、誰かがそういうロックを取っている最中に > forkすると、以後libcのスレッドセーフな関数を呼ぶと刺さるという結果に > なる可能性があります。 確かにそうです。 > NetBSDの話をしているなら、きっと神戸さんが正しいと思います 安直に信じてはダメです。:-) -- 神戸 隆博 / Takahiro Kambe