From: "U.Nakamura" Date: 2008-12-11T17:27:00+09:00 Subject: [ruby-dev:37383] [trunk:Bug] GC from blocking region (was Re: Ruby開発ミーティングログ) こんにちは、なかむら(う)です。 In message "[ruby-dev:37381] Re: Ruby開発ミーティングログ" on Dec.11,2008 13:44:58, wrote: > > - Bug #755 [ruby-core:19946]: Windows specific. うささんに聞く (akr) > > 対応パッチを作ってこの問題が解決するところまではたどり着いて > るのですが、メモリ関連のバグを仕込んでいるらしく別のテストで > [BUG]るようになってしまったので困っているところです。 > 誰かパッチのバグを探してくれる人がいるならそのパッチを出しま > すが... これ、原因わかりました。 blocking region内でGCが発生すると、blocing regionじゃないスレ ッド(なんか名前ないかな)のスタックが一切markされないため、そ のスレッドでスタック上にあるVALUEが回収されてしまいます。 対策としては、 (1) blocking regionからGCが起こされたときはblocking regionじゃ ないスレッドを止めてそのスレッドのスタックをmarkしてGCを 続行させる。 → 無理がありそう (2) blocking regionからGCを起こさせない (a) xmalloc等は使用禁止とする → 面倒なのではないか (b) blocking regionからxmalloc等が呼ばれたときはメモリ確保 できなくてもGCしない といったあたりがIRCでは出ました。 それでは。 -- U.Nakamura