From: Yukihiro Matsumoto Date: 2007-04-09T16:22:33+09:00 Subject: [ruby-dev:30698] Re: coredump on NetBSD with trunk まつもと ゆきひろです In message "Re: [ruby-dev:30675] coredump on NetBSD with trunk" on Wed, 28 Mar 2007 10:38:48 +0900, "U.Nakamura" writes: |NetBSD/i386 3.99.17(ちょっと古い)上でtrunkのrubyで | | ruby -rresolv -e 'p Resolv.getname("221.186.184.68") | |を実行すると、 | |ruby: Error detected by libpthread: Invalid condition variable. |Detected by file "/usr/src/lib/libpthread/pthread_cond.c", line 91, function "pthread_cond_destroy". |See pthread(3) for information. |zsh: 668 abort (core dumped) ruby -rresolv -e 'p Resolv.getname("221.186.184.68")' | |となってcoreを吐きます。 |調べてみると、thread_pthread.ciのnative_thread_destroy()の中 |で、未初期化のth->native_thread_data.sleep_condを引数として |pthread_cond_destroy()を呼んでいるのが原因のようです。 | |試しに以下のようなパッチを当ててみたところ、coreは吐かなくな |りました。 |# 吐かない代わりに例外が起きますが、これはどの環境でも出ると |# 思うのでその話は割愛します。 | |ここで初期化するのがいいのかどうかはよくわかりませんが、どこ |かで初期化しておくか初期化済みフラグを用意するとかする必要は |あると思います。 これでコミットしましょう。放置していると忘れちゃうので。