diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index db13db76d6..6955118de7 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -604,6 +604,30 @@ end.join rescue SystemStackError end + def test_machine_stackoverflow_by_trace + assert_normal_exit("#{<<-"begin;"}\n#{<<~"end;"}", timeout: 60) + begin; + require 'timeout' + require 'tracer' + class HogeError < StandardError + def to_s + message.upcase # disable tailcall optimization + end + end + Tracer.stdout = open(IO::NULL, "w") + begin + Timeout.timeout(5) do + Tracer.on + HogeError.new.to_s + end + rescue Timeout::Error + # ok. there are no SEGV or critical error + rescue SystemStackError => e + # ok. + end + end; + end + def test_cause msg = "[Feature #8257]" cause = nil diff --git a/test/ruby/test_trace.rb b/test/ruby/test_trace.rb index 434da70107..77be94e9be 100644 --- a/test/ruby/test_trace.rb +++ b/test/ruby/test_trace.rb @@ -59,28 +59,4 @@ class TestTrace < Test::Unit::TestCase a.any? {true} }.value, bug2722) end - - def test_trace_stackoverflow - assert_normal_exit("#{<<-"begin;"}\n#{<<~"end;"}", timeout: 60) - begin; - require 'timeout' - require 'tracer' - class HogeError < StandardError - def to_s - message.upcase # disable tailcall optimization - end - end - Tracer.stdout = open(IO::NULL, "w") - begin - Timeout.timeout(5) do - Tracer.on - HogeError.new.to_s - end - rescue Timeout::Error - # ok. there are no SEGV or critical error - rescue SystemStackError => e - # ok. - end - end; - end end