Bug #2390
closedMarshal.dump pass a hidden object
Description
=begin
以下のようにすると、hidden T_STRING object であるとされて例外になります。
$ ruby -ve '
r, w = IO.pipe
def w.write(str)
p str
end
Marshal.dump(Object.new, w)
'
ruby 1.9.2dev (2009-11-20 trunk 25868) [i386-mingw32]
-e:4:in p': method
inspect' called on hidden T_STRING object (0xb91048) (NotImplementedError)
from -e:4:in write' from -e:6:in
dump'
from -e:6:in `'
r25230 ではなく r19653 から NotImplementedError になるようなので
Bug #2386 とは違う問題ではないかと思い、別のチケットにさせていただきました。
もし同じ問題でしたら申し訳ありません。
=end
Updated by keiju (Keiju Ishitsuka) over 14 years ago
=begin
けいじゅ@いしつかです.
In [ruby-dev:39744] the message: "[ruby-dev:39744] [Bug #2390]
Marshal.dump pass a hidden object", on Nov/20 21:40(JST) _ wanabe
writes:
起票者: _ wanabe
ステータス: Open, 優先度: Low
カテゴリ: core
ruby -v: ruby 1.9.2dev (2009-11-20 trunk 25868) [i386-mingw32]
r, w = IO.pipe
def w.write(str)
p str
end
Marshal.dump(Object.new, w)
-e:4:in
p': method
inspect' called on hidden T_STRING object (0xb91048) (NotImplementedError)
r25230 ではなく r19653 から NotImplementedError になるようなので
Bug #2386 とは違う問題ではないかと思い、別のチケットにさせていただきました。
もし同じ問題でしたら申し訳ありません。
こちらも, Marshal.dump(str, io) で用いている io が Tempfileだったので,
同じ問題な気もします. r19653 で例外だったのが, r25230 で ついにSEGVに
なったのかも. SEGVだけチェックしていたので, 例外に気が付かなかったのか
も知れません.
__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---
=end
Updated by nobu (Nobuyoshi Nakada) over 14 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
=begin
This issue was solved with changeset r25881.
_, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
=end
Updated by keiju (Keiju Ishitsuka) over 14 years ago
- Status changed from Closed to Feedback
=begin
最新版で確認しました。
状況はあまり変わっていないようです...
SEGVする場合がほとんどですが、以下のようなエラーメッセージがでる場合もあります。
以前とちょっとメッセージが変わっています。
method to_s' called on hidden T_NONE object (0x9efbe70 flags=0x2000 klass=0x0) /usr/local/apps/rubyware/ruby-1.9.2-20091124/lib/ruby/1.9.1/delegate.rb:265:in
write'
/usr/local/apps/rubyware/ruby-1.9.2-20091124/lib/ruby/1.9.1/delegate.rb:265:in block in delegating_block' /home/keiju/public/a.research/fairy/git/fairy/lib/fairy/node/port.rb:862:in
dump'
ちなみに、Marshal.dump(e, io) で ioにTempfileを使っていると言いましたが、tempfileから実際のioを取り出して、
直接そちらにdumpするようにすると、エラーは発生しなくなります。
=end
Updated by mame (Yusuke Endoh) over 14 years ago
- Status changed from Feedback to Closed
=begin
遠藤です。
いしつかさんが言ってるのは #2386 の問題ですよね。
wanabe さんがこのチケットが報告した問題自体は解決済みなので、
こっちのチケットは閉じます。
--
Yusuke Endoh mame@tsg.ne.jp
=end