Actions
Bug #886
closedGC from blocking region
Description
=begin
ささだです.
U.Nakamura wrote::
こんにちは、なかむら(う)です。
In message "[ruby-dev:37381] Re: Ruby開発ミーティングログ"
on Dec.11,2008 13:44:58, usa@garbagecollect.jp 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では出ました。
(c) blocking_region の中で,さらに ruby な環境にさわれる状態になり(GVL
を取得する),メモリ確保を行う,ということが考えられます.性能はもちろん
落ちますが(使いどころを間違えると,とてもとても遅くなります),どーして
も必要な場合は使う,ってことが出来るかと思います.
--
// SASADA Koichi at atdot dot net
=end
Actions
Like0
Like0Like0Like0Like0Like0Like0