まつもと ゆきひろです

In message "[ruby-ext:02239] インタプリタ終了時のGCマーク"
    on 03/11/03, ABE Shigeru <shiger-a / nifty.com> writes:

| スクリプトの実行が終了し、rb_cleanup() が呼び出されるとオブジェクト
|の破棄が始まります。
| このとき、
|
|  オブジェクト B の破棄
|→ GC マークの開始
|→ A_mark() が呼び出される
|→ ptr->b->value を評価するが既に b が削除されているためエラー発生
|
|という現象が起こりました。
|
| 上のようなプログラムを書く方が悪いのでしょうか。
| 何か解決方法がありましたら、教えていただきたいと思います。
|
| よろしくお願いします。

rb_cleanup()はruby_cleanup()のことだと思うんですが、その中で
A_markが呼ばれちゃうってのはどういうことなんでしょう。

ここで呼んでいるのはfinalizerだけなんで、ここでGCが発生するっ
てのは、かなり複雑なfinalizerを呼んでるってことかなあ。

                                まつもと ゆきひろ /:|)