From: Magnus Holm Date: 2010-11-23T00:21:50+09:00 Subject: [ruby-core:33289] [Ruby 1.9-Bug#4082][Open] Segfault with tailcall_optimization and class definition Bug #4082: Segfault with tailcall_optimization and class definition http://redmine.ruby-lang.org/issues/show/4082 Author: Magnus Holm Status: Open, Priority: Normal ruby -v: ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0] Code: RubyVM::InstructionSequence.compile_option = { :tailcall_optimization => true, :trace_instruction => false } RubyVM::InstructionSequence.new(<<-EOF).eval class Foo def fact_helper(n, res) if n == 1 res else fact_helper(n - 1, n * res) end end def fact(n) fact_helper(n, 1) end end EOF p Foo.new.fact(30000) Error: :6: [BUG] Segmentation fault ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.4.0] -- control frame ---------- c:0004 p:0031 s:0014 b:0011 l:000010 d:000010 METHOD :6 c:0003 p:0078 s:0007 b:0006 l:001588 d:001e68 EVAL -:22 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:001588 d:001588 TOP --------------------------- -- Ruby level backtrace information ---------------------------------------- -:22:in `
' :6:in `fact_helper' -- C level backtrace information ------------------------------------------- [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html Abort trap ---------------------------------------- http://redmine.ruby-lang.org