All right, I am no longer getting the same error since I patched it for myself, but to illustrate what I am talking about, here is another way to crash irb in basically the same way, pointing to a wider problem. It can be illustrated with Pyper gem that I wrote as follows:
gem install 'pyper'
a = [1, 3, 4, 3, 0, 3, 1]
a.τsπ( :uniq ).χOixπ.χriXgζmEπ # consider it fuzz testing :-)
NoMethodError ensues, that crashes the irb:
NoMethodError: undefined method map' for 0:Fixnum /usr/local/lib/ruby/2.0.0/irb.rb:526:in join': incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
from /usr/local/lib/ruby/2.0.0/irb.rb:526:in block (2 levels) in eval_input' from /usr/local/lib/ruby/2.0.0/irb.rb:624:in signal_status'
from /usr/local/lib/ruby/2.0.0/irb.rb:489:in block in eval_input' from /usr/local/lib/ruby/2.0.0/irb/ruby-lex.rb:247:in block (2 levels) in each_top_level_statement'
from /usr/local/lib/ruby/2.0.0/irb/ruby-lex.rb:233:in loop' from /usr/local/lib/ruby/2.0.0/irb/ruby-lex.rb:233:in block in each_top_level_statement'
from /usr/local/lib/ruby/2.0.0/irb/ruby-lex.rb:232:in catch' from /usr/local/lib/ruby/2.0.0/irb/ruby-lex.rb:232:in each_top_level_statement'
from /usr/local/lib/ruby/2.0.0/irb.rb:488:in eval_input' from /usr/local/lib/ruby/2.0.0/irb.rb:397:in block in start'
from /usr/local/lib/ruby/2.0.0/irb.rb:396:in catch' from /usr/local/lib/ruby/2.0.0/irb.rb:396:in start'
from /usr/local/bin/irb:12:in `
'
Note that eg.
a.τsπ( :uniq ).χOixπ.χriXgζqτ.tap { fail NoMethodError }
raises NoMethodError without crashing the irb.