まつもと ゆきひろです

In message "Re: [ruby-dev:38613] [BUG: trunk] called on terminated object"
    on Mon, 15 Jun 2009 06:18:27 +0900, SASADA Koichi <ko1 / atdot.net> writes:

| ObjectSpace.each_object で inspect してまわっていると,"called on
|terminated object" と言われてしまうのですが,とくに問題ないんでしたっけ?

問題ないことはないですね。

| ObjectSpace.each_object は klass の値をチェックしてるように思うんです
|が,なんでこんなことになるんだろう.

調べてみたんですが、すでに参照されていない配列が生きていない
オブジェクトを指しているようです。each_objectの直前にGCを呼
ぶと発生しません。

これに対する考え方はたぶん二つあって

  * each_objectはそういうものである
  * each_objectのループ前に内部でGCを呼ぶ

のいずれかになると思います。気分的には後者かなあ。