From: Tanaka Akira Date: 2005-12-30T12:57:50+09:00 Subject: [ruby-dev:28185] Re: generator.rb deadlocks In article <20051230123231.C5C554F8.ocean@m2.ccsnet.ne.jp>, H.Yamamoto writes: > # Thread.pass を呼ばないと、@loop_thread が止まる前に end? で @loop_thread.wakeup が > # 呼ばれて、スレッドは run 状態なので無視され、その後 @loop_thread と @main_thread > # の両方がそれぞれの Thread.stop で止まってしまうので deadlock > > この修正で田中さんの deadlock も解決しますか? 私の環境でも症状は出なくなりました。 でも、Thread.pass を入れて解決、というのは違うんじゃないですか? Thread.pass で他のスレッドは動いたからといって、問題のスレッ ドが止まる前に戻ってくる可能性はあるわけですよね。 RUBY_ALWAYS_GC のせいで ruby が遅いとか、他の (例えば root が nice で優先度をあげた) プロセスが突如激しく計算を行って ruby がしばらく遅いとかという状況で、SIGVTARLM が何回もくる とか。 -- [田中 哲][たなか あきら][Tanaka Akira]