summaryrefslogtreecommitdiff
path: root/test/-ext-
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2019-07-31 23:00:15 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2019-08-01 16:00:59 +0900
commit5d33f787169bcc3594d2264726695d58c4a06899 (patch)
treef3a4fb4c67a22571d8dd632d4f77c452ecfa8863 /test/-ext-
parentd2f8e03f346424553f3081896c91dd7d6fdf5db0 (diff)
fix tracepoint + backtrace SEGV
PC modification in gc_event_hook_body was careless. There are (so to say) abnormal iseqs stored in the cfp. We have to check sanity before we touch the PC. This has not been fixed because there was no way to (ab)use the setup from pure-Ruby. However by using our official C APIs it is possible to touch such frame(s), resulting in SEGV. Fixes [Bug #14834].
Diffstat (limited to 'test/-ext-')
-rw-r--r--test/-ext-/test_bug-14834.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/-ext-/test_bug-14834.rb b/test/-ext-/test_bug-14834.rb
new file mode 100644
index 0000000000..a3623b8adc
--- /dev/null
+++ b/test/-ext-/test_bug-14834.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+class Test_BUG_14834 < Test::Unit::TestCase
+ def test
+ assert_ruby_status [], <<~'end;', '[ruby-core:87449] [Bug #14834]'
+ require '-test-/bug_14834'
+ Bug.bug_14834 do
+ [123].group_by {}
+ end
+ end;
+ end
+end