Project

General

Profile

Actions

Bug #1634

closed

called on terminated object

Added by ko1 (Koichi Sasada) almost 16 years ago. Updated about 14 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:38613]

Description

=begin
 ささだです.

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

$ ./ruby -ve 'ObjectSpace.each_object{|o| o.inspect}'
ruby 1.9.2dev (2009-06-14 trunk 23685) [i686-linux]
-e:1:in inspect': method inspect' called on terminated object
(0x9789c14) (NotImplementedError)
from -e:1:in block in <main>' from -e:1:in each_object'
from -e:1:in `'

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

--
// SASADA Koichi at atdot dot net
=end

Actions #1

Updated by matz (Yukihiro Matsumoto) almost 16 years ago

=begin
まつもと ゆきひろです

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

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

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

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

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

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

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

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

=end

Actions #2

Updated by matz (Yukihiro Matsumoto) almost 16 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r23693.
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0