From: SASADA Koichi Date: 2010-10-18T23:54:34+09:00 Subject: [ruby-dev:42429] Re: [BUG: trunk] Lazy sweep and ObjectSpace.each_object  ささだです。 (2010/10/18 7:14), Narihiro Nakamura wrote: > Lazy sweep 禁止フラグを作りました。 > 反対がなければコミットしたいと思います。 > > callbackの途中でGCが呼ばれてSEGVを起こすようなコードを作成し、通ることを確認しました。 > make checkも通ることを確認しています。  これだと、例えば例外が出た場合、dont_lazy_sweep が TRUE のままになって しまうような気がします。ensure で囲まないと。 # 余談  ちょっと関係ないですが、gc_lazy_sweep() という関数は、下記の挙動だと思 うのですが; ・もし、遅延した slot があれば、sweep をする  これで、freelist が NULL でなければ、ここで終わり ・GC を開始(mark) ・遅延 sweep をして、結果を返す sweep という関数で mark までしちゃうのはいいでしょうか。  あまり、対案はないのですが、なんとなく、garbage_collect() を 今の gc_lazy_sweep() として、今の garbage_collect() を、 garbage_collect_eager() みたいにしてしまうのはどうだろう、と思いました。 -- // SASADA Koichi at atdot dot net