summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-18 13:47:56 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-18 13:47:56 +0000
commit340390093b1db331630d227edbd0f32d2d2b882a (patch)
tree8c6df9ffe3d20d2d40fb3cadb1a29877521adc87 /test
parent53953eee7c837541ad95e92bcda6ea3fd7f9ff34 (diff)
eval_intern.h: refine stack overflow detection
* eval_intern.h (TH_PUSH_TAG, TH_EXEC_TAG): refine stack overflow detection. chain local tag after setjmp() successed on it, because calling setjmp() also can overflow the stack. [ruby-dev:47804] [Bug #9109] * vm_eval.c (rb_catch_obj): now th->tag points previous tag until TH_EXEC_TAG(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_exception.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb
index 92438ad742..ca6e43ee13 100644
--- a/test/ruby/test_exception.rb
+++ b/test/ruby/test_exception.rb
@@ -477,6 +477,14 @@ end.join
assert_raise(SystemStackError){m}
end
+ def test_machine_stackoverflow
+ bug9109 = '[ruby-dev:47804] [Bug #9109]'
+ assert_separately([], <<-SRC)
+ h = {a: ->{h[:a].call}}
+ assert_raise(SystemStackError, #{bug9109.dump}) {h[:a].call}
+ SRC
+ end
+
def test_cause
msg = "[Feature #8257]"
cause = nil