From: matz@... (Yukihiro Matsumoto) Date: 2000-10-17T13:39:56+09:00 Subject: [ruby-dev:11255] Re: mswin32 rb_thread_schedule() problem まつもと ゆきひろです In message "[ruby-dev:11254] mswin32 rb_thread_schedule() problem" on 00/10/17, Katsuyuki Komatsu writes: |mswin32で[ruby-dev:10259]を走らせるとrb_thread_schedule()が |無限ループに陥ってしまいます. | |rb_thread_start_0()でrb_thread_remove()が呼ばれてcurr_threadが |THREAD_KILLEDになった後,rb_thread_schedule()が呼ばれるのですが, |FOREACH_THREAD(th)はcurr_threadがリンクから外されているのため |停止条件が成り立たず,無限ループしていました. |FOREACH_THREAD_FROM(curr, th)にすると止まるようになりました. | |あと,以下を変更しました. | |o rb_abort()で,ruby_errinfoのチェックを!NIL_P()で行うようにしました. |o THREAD_ALLOC()でth->errinfoが2回代入されているのを削除しました. |o THREAD_ALLOC()でth->prevとth->nextの初期化が実行されるように | なったので,rb_callcc()のth->prevとth->nextの初期化を削除しました. それぞれもっともです。取り込みます。パッチ感謝します。