Prefer th->ec for stack base/size. (#13101)

This commit is contained in:
Samuel Williams 2025-04-17 22:21:51 +09:00 committed by GitHub
parent 6062c904ae
commit c4ae6cb500
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
Notes: git 2025-04-17 13:22:09 +00:00
Merged-By: ioquatix <samuel@codeotaku.com>
4 changed files with 86 additions and 6 deletions

View file

@ -0,0 +1,53 @@
# frozen_string_literal: true
require 'test/unit'
class Test_StackOverflow < Test::Unit::TestCase
def test_proc_overflow
omit("Windows stack overflow handling is missing") if RUBY_PLATFORM =~ /mswin|win32|mingw/
assert_separately([], <<~RUBY)
# GC may try to scan the top of the stack and cause a SEGV.
GC.disable
require '-test-/stack'
assert_raise(SystemStackError) do
Thread.alloca_overflow
end
RUBY
end
def test_thread_stack_overflow
omit("Windows stack overflow handling is missing") if RUBY_PLATFORM =~ /mswin|win32|mingw/
assert_separately([], <<~RUBY)
require '-test-/stack'
GC.disable
thread = Thread.new do
Thread.current.report_on_exception = false
Thread.alloca_overflow
end
assert_raise(SystemStackError) do
thread.join
end
RUBY
end
def test_fiber_stack_overflow
omit("Windows stack overflow handling is missing") if RUBY_PLATFORM =~ /mswin|win32|mingw/
assert_separately([], <<~RUBY)
require '-test-/stack'
GC.disable
fiber = Fiber.new do
Thread.alloca_overflow
end
assert_raise(SystemStackError) do
fiber.resume
end
RUBY
end
end