Project

General

Profile

Actions

Backport #5755

closed

Errors raised and rescued in Kernel#loaded file still propagate

Added by now (Nikolai Weibull) over 12 years ago. Updated about 12 years ago.


Description

a.rb:

load 'b.rb'

b.rb:

begin
BasicObject.new.inspect
rescue => e
p e
end

% ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33569) [x86_64-darwin10.8.0]
% ruby a.rb
#<NoMethodError: undefined method inspect' for #<BasicObject:0x0000010090b388>> b.rb:4:in to_str': undefined method inspect' for #<BasicObject:0x0000010090b388> (NoMethodError) from b.rb:4:in to_s'
from b.rb:4:in inspect' from b.rb:4:in p'
from b.rb:4:in rescue in <top (required)>' from b.rb:1:in <top (required)>'
from a.rb:1:in load' from a.rb:1:in '
% ruby b.rb
#<NoMethodError: undefined method `inspect' for #BasicObject:0x0000010090b388>

This is a bug, right?


Files

bug_5755.patch (590 Bytes) bug_5755.patch nagachika (Tomoyuki Chikanaga), 12/13/2011 12:24 PM

Updated by nagachika (Tomoyuki Chikanaga) over 12 years ago

  • File bug_5755.patch bug_5755.patch added
  • Category set to core
  • Status changed from Open to Assigned
  • Assignee set to nagachika (Tomoyuki Chikanaga)
  • Target version set to 2.0.0

Thank you for your report.
I think this is a bug too.

I've found a bad usage of rb_protect() in name_err_mesg_to_str(). When an exception is going to ignored, rb_thread_t::errinfo should be cleared. I'll attach a patch. I'd like to commit it later if there's no objection.

BTW, I wonder if the similar problem exists in openssl extension. nahi-san, how do you think?

Actions #2

Updated by nagachika (Tomoyuki Chikanaga) over 12 years ago

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

This issue was solved with changeset r34030.
Nikolai, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


Actions #3

Updated by nagachika (Tomoyuki Chikanaga) over 12 years ago

  • Tracker changed from Bug to Backport
  • Project changed from Ruby master to Backport193
  • Category deleted (core)
  • Status changed from Closed to Open
  • Target version deleted (2.0.0)

Please backport r34028 and r34030.

Actions #4

Updated by naruse (Yui NARUSE) about 12 years ago

  • Status changed from Open to Closed

This issue was solved with changeset r34466.
Nikolai, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


merge revision(s) 34028,34030:

* error.c (name_err_mesg_to_str): clear rb_thread_t::errinfo when
  ignore exception under rb_protect().

* test/ruby/test_exception.rb (test_exception_in_name_error_to_str):
  add a corresponding test.
  ignore exception under rb_protect(). [ruby-core:41612] [Bug #5755]
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0