[#30549] [ANN] Ruby 1.8.6 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 をリリースしました。

14 messages 2007/03/12

[#30553] help: lib/shell for ruby 1.9 — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

13 messages 2007/03/13
[#30585] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[#30587] Re: help: lib/shell for ruby 1.9 — keiju@... (石塚圭樹) 2007/03/15

けいじゅ@いしつかです.

[#30588] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[ruby-dev:30675] coredump on NetBSD with trunk

From: "U.Nakamura" <usa@...>
Date: 2007-03-28 01:38:48 UTC
List: ruby-dev #30675
こんにちは、なかむら(う)です。

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は吐かなくな
りました。
# 吐かない代わりに例外が起きますが、これはどの環境でも出ると
# 思うのでその話は割愛します。

ここで初期化するのがいいのかどうかはよくわかりませんが、どこ
かで初期化しておくか初期化済みフラグを用意するとかする必要は
あると思います。

Index: thread_pthread.ci
===================================================================
--- thread_pthread.ci   (リビジョン 12127)
+++ thread_pthread.ci   (作業コピー)
@@ -252,6 +252,8 @@
	    th->status = THREAD_KILLED;
	    rb_raise(rb_eThreadError, "can't create Thread (%d)", err);
	}
+
+	pthread_cond_init(&th->native_thread_data.sleep_cond, 0);
     }
     return err;
 }

それでは。
-- 
U.Nakamura <[email protected]>



In This Thread

Prev Next