From: Yusuke ENDOH Date: 2010-02-13T11:19:00+09:00 Subject: [ruby-dev:40412] Re: [Bug:trunk] rubyspec: ObjectSpace.define_finalizer doesn't call self-referencing finalizers FAILED 遠藤です。 2010年2月13日10:40 Tanaka Akira : > 2010年2月13日10:31 Yusuke ENDOH : >> これ自体はひょっとしたらバグなのかもしれませんが、一般的に言って、 >> conservative GC だとファイナライザが予期せずオブジェクト自体に参照を >> 持ってしまう可能性があるので、self-referencial なファイナライザを >> 実行しないという方針だと、ファイナライザが不可解に実行されない事態の >> 発生を避けられないという結論に至りました。 > > そういえば、1.8 の tempfile.rb は、ファイナライザとして > Proc じゃなくて普通のオブジェクトを使うようにして、 > 変な参照を持たないようにしてあるんですが、 > そうするのは関係ありますかね。 [ruby-dev:40409] のパッチ + 単純に Tempfile::Remover を復活させてみた だけでは、やっぱり消えないようでした。どこかで不要な mark をしてるの かなあ。 -- Yusuke ENDOH