From: Narihiro Nakamura Date: 2012-11-30T08:08:57+09:00 Subject: [ruby-dev:46666] Re: [ruby-trunk - Bug #7452] Main thread is stopped after running finalizers if the main thread has a finalizer 2012年11月29日 18:01 Nobuyoshi Nakada : > (12/11/28 21:42), authorNari (Narihiro Nakamura) wrote: >> ややad-hocですが、こんな感じでなおしてみました。 >> https://gist.github.com/4160845 >> VMから見えているものはとりあえずマークしておいて、通常のファイナライズは回避し、強制的なファイナライズでそれらを実行させるようにしています。 > > VMから見えているものがfinalizeされてしまうというのは単純なマーク漏れのバグと考えていいんじゃないですかね。 > rb_objspace_call_finalizerではマークがすべてのオブジェクトに付いてない状態で実行されるんですよね。 なので、もしかするとここでVMから見えるものだけマークするだけじゃなく、gc_marksとか読んだほうがいいのかもですが…。 とりあえずは、「ほとんど強制的なファイナライズ」の方でコミットしてみました。 test-allなどは通ったのでとりあえずこれで様子を見たいとおもいます。 -- Narihiro Nakamura (nari)