logo       
Google Custom Search
    AddThis Social Bookmark Button

[ruby-dev:28187] Re: generator.rb deadlocks: msg#00276

Subject: [ruby-dev:28187] Re: generator.rb deadlocks
山本です。

>私の環境でも症状は出なくなりました。
>
>でも、Thread.pass を入れて解決、というのは違うんじゃないですか?
>
>Thread.pass で他のスレッドは動いたからといって、問題のスレッ
>ドが止まる前に戻ってくる可能性はあるわけですよね。
>
>RUBY_ALWAYS_GC のせいで ruby が遅いとか、他の (例えば root
>が nice で優先度をあげた) プロセスが突如激しく計算を行って
>ruby がしばらく遅いとかという状況で、SIGVTARLM が何回もくる
>とか。

すみません、ruby の Thread をよく理解してないので・・・

Thread.stop は @loop_thread の先頭にあるし、一回 pass してやれば
十分かと思ったのですが、確かに不十分だったかもしれません。

こんな感じでしょうか?

Index: generator.rb
===================================================================
RCS file: /src/ruby/lib/generator.rb,v
retrieving revision 1.7
diff -u -w -b -p -r1.7 generator.rb
--- generator.rb        30 Dec 2005 03:24:18 -0000      1.7
+++ generator.rb        30 Dec 2005 04:11:24 -0000
@@ -81,7 +81,7 @@ class Generator
         @main_thread.wakeup
       end
     end
-    Thread.pass # ensure @loop_thread to be stopped
+    Thread.pass until @loop_thread.stop?
     self
   end







Try Searching:
servers, voip, java, networking, microsoft ...
<Prev in Thread] Current Thread [Next in Thread>