From: Tanaka Akira Date: 2005-06-12T23:00:32+09:00 Subject: [ruby-dev:26344] Re: rb_gc_mark_threads spin In article <200506121327.j5CDR2oG012546@sharui.nakada.niregi.kanuma.tochigi.jp>, nobu@ruby-lang.org writes: >> これは curr_thread ですでに rb_thread_terminated が終わって >> THREAD_KILLED になっていて、main thread に SystemExit が伝播しないのが >> 原因のようです。 > > そうすると、[ruby-dev:26318]で直るのは、別の生きているスレッド > から伝播されるようになるんでしょうね。 はい。ってゆーか、[ruby-dev:26128] は main thread のほかにはひとつしか ないんで、[ruby-dev:26318] をあてると、select 時には curr_thread が main thread になっています。 (でも、スタックは main thread じゃないはずだよなぁ。なんでそれで動いて んだろ?) >> curr_thread をどうするかという点にも依存しますが、curr_thread を現在の >> ままとすれば、こんな感じですかね。 > > 他のFOREACH_THREAD()は大丈夫なのかがちょっと気になりますが、ど > うもrb_thread_schedule()の途中でcurr_threadをいじるのではうまく > 行かないようなので、そうするほうがいいかも知れません。 rb_thread_schedule の最後で環状リストから外す、というやりかたを考えつ いたのですが、まだ手を動かしていません。 -- [田中 哲][たなか あきら][Tanaka Akira]