Bug #9063
closedirb crashes when #backtrace of raised Exception is nil
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 eval_input'
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
Files
Updated by sorah (Sorah Fukumori) about 11 years ago
- Status changed from Open to Assigned
- Assignee set to keiju (Keiju Ishitsuka)
+1, I think irb shouldn't die even if caught Exception is something wrong.
Could you attach a patch for here too?
Updated by makimoto (Shimpei Makimoto) about 11 years ago
attached a patch. (which is same with https://github.com/ruby/ruby/pull/434.patch )
Updated by hsbt (Hiroshi SHIBATA) over 10 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
Applied in changeset r47164.
- lib/irb.rb: Prevent irb from crashing when exception with
nil backtrace is raised.
[fix GH-434][ruby-core:58078][Bug #9063] - test/irb/test_raise_no_backtrace_exception.rb: ditto.