Bug #9063

irb crashes when #backtrace of raised Exception is nil

Added by Shimpei Makimoto 6 months ago. Updated 5 months ago.

[ruby-core:58078]
Status:Assigned
Priority:Normal
Assignee:Keiju Ishitsuka
Category:-
Target version:-
ruby -v:ruby 2.1.0dev (2013-10-30 trunk 43474) [x86_64-darwin13.0.0] Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN

Description

=begin
See also the pull req on GitHub: https://github.com/ruby/ruby/pull/434

When an exception whose backtrace is nil is raised, irb crashes and exits with the following backtrace:

irb> class E < Exception; def backtrace; nil; end; end
irb> raise E
E: E
/Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb.rb:502:in block (2 levels) in eval_input': undefined method[]' for nil:NilClass (NoMethodError)
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb.rb:624:in signal_status'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb.rb:489:in
block in evalinput'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb/ruby-lex.rb:247:in block (2 levels) in each_top_level_statement'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb/ruby-lex.rb:233:in
loop'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb/ruby-lex.rb:233:in block in each_top_level_statement'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb/ruby-lex.rb:232:in
catch'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb/ruby-lex.rb:232:in each_top_level_statement'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb.rb:488:in
eval
input'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb.rb:397:in block in start'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb.rb:396:in
catch'
from /Users/makimoto/.rbenv/versions/trunk/lib/ruby/2.1.0/irb.rb:396:in start'
from /Users/makimoto/.rbenv/versions/trunk/bin/irb:11:in
'

=end

irb-when-backtrace-nil.patch Magnifier (2.91 KB) Shimpei Makimoto, 10/31/2013 07:27 AM

History

#1 Updated by Shota Fukumori 6 months ago

  • Status changed from Open to Assigned
  • Assignee set to Keiju Ishitsuka

+1, I think irb shouldn't die even if caught Exception is something wrong.

Could you attach a patch for here too?

#2 Updated by Shimpei Makimoto 6 months ago

attached a patch. (which is same with https://github.com/ruby/ruby/pull/434.patch )

#3 Updated by Shota Fukumori 5 months ago

ping?

Also available in: Atom PDF