From: mail@... Date: 2015-11-09T03:17:58+00:00 Subject: [ruby-core:71388] [Ruby trunk - Bug #11667] [Open] Ruby process crashes when TracePoint.new(:raise) is enabled and SystemStackError is raised Issue #11667 has been reported by Yuki Nishijima. ---------------------------------------- Bug #11667: Ruby process crashes when TracePoint.new(:raise) is enabled and SystemStackError is raised https://bugs.ruby-lang.org/issues/11667 * Author: Yuki Nishijima * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (2015-10-23 trunk 52247) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: REQUIRED ---------------------------------------- Let's say a `TracePoint.new(:raise)` is enabled. When a method that recursively calls itself, the Ruby process will just die rather than raising a SystemStackError. ``` $ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux] $ irb 2.2.3 :001 > TracePoint.new(:raise){}.enable => false 2.2.3 :002 > def f(i); f(i-1); end; f(10_000) /usr/local/rvm/rubies/ruby-2.2.3/bin/irb: exception reentered (fatal) ``` ``` $ ruby -v ruby 2.3.0dev (2015-10-23 trunk 52247) [x86_64-linux] $ irb head :001 > TracePoint.new(:raise){|tp| tp.raised_exception }.enable => false head :002 > def f(i); f(i-1); end; f(10_000) /usr/local/rvm/rubies/ruby-head/bin/irb: exception reentered (fatal) ``` I expect this code to raise `SystemStackError` instead. -- https://bugs.ruby-lang.org/