From: f-miura@... (MIURA, Fumiaki) Date: 2010-01-18T13:49:18+09:00 Subject: [ruby-dev:40110] Re: [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 NTTレゾナント三浦です。 At Thu, 14 Jan 2010 12:32:05 +0900, Takahiro Kambe wrote: > Ruby 1.8.7 patchlevel 249はNetBSD 5.0以降では、pthreadの処理に由来する問題に > より、そのままでは実用に絶えません。 > > * Rubyでthreadを使用したプログラム > * systemやバッククォートで子プロセスを呼び出したプログラム > > これらではRuby内部のpthreadによるthread_timer内で待ち続ける状態になって、 > プロセスが SIGKILL でないと殺せない状態に陥る場合があります。 というのは具体的にどこで起こるのでしょう? pthread_mutex_init()なのでしょうか? netbsdのpthread_mutex_init()は http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-5-0/src/lib/libpthread/pthread_mutex.c でいいのでしょうか。 これが呼び出す__cpu_simple_lock_clear()が http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-5-0/src/sys/arch/x86/include/lock.h である場合、結局pthread_mutex_init(lock, NULL)はユーザーランドでの参照 と代入だけなので、ここで刺さるはずはないと思うのです。 -- ▽R← 三浦史光 X;M R←+/,(?1↑ρM)/M←X≠.- 運命 X▽ そうじゃない実現を思いつかないのでソース見ました