Project

General

Profile

Actions

Bug #2732

closed

rubyspec: ObjectSpace.define_finalizer doesn't call self-referencing finalizers FAILED

Added by mame (Yusuke Endoh) about 14 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 1.9.2dev (2010-02-10 trunk 26632)
Backport:
[ruby-dev:40382]

Description

=begin
なかださんかまつもとさん
遠藤です。

以下のようにすると T_ZOMBIE が見えてしまうのはバグでしょうか。

$ ./ruby -ve '
obj = "test"
ObjectSpace.define_finalizer(obj, proc { begin; p obj; ensure; p $!; end })
'
ruby 1.9.2dev (2010-02-10 trunk 26632) [i686-linux]
#<NotImplementedError: method `inspect' called on unexpected
T_ZOMBIE object (0x8248df0 flags=0x3e klass=0x0)>

[ruby-core:23918] で、obj への reference があるからこれは回収
されないようなことが書かれていますが、結局回収されるように
なっているようです。

[ruby-core:24095] でバグとして登録されていますが、どっちが
正しいのかよくわかりません。
rubyspec に回収されないことを確認する spec が入っていて、失敗
しています。

回収されるのが正解だとしたら、例外メッセージから unexpected は
消すべきだと思います。
見えないのが正解だとしたら、バグなんでしょう。

--
Yusuke ENDOH
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0