Skip to content

ZJIT: [BUG] Segmentation fault at TestRegexp#test_to_s_under_gc_compact_stress #965

@k0kubun

Description

@k0kubun

This seems like the most frequent ZJIT failure today: https://github.com/ruby/ruby/actions/runs/23828678135/job/69457273692?pr=16627

    1) Timeout:
  TestRegexp#test_to_s_under_gc_compact_stress
  
  Finished tests in 1938.149950s, 17.8371 tests/s, 3744.2810 assertions/s.
  34571 tests, 7256978 assertions, 0 failures, 1 errors, 158 skips
  
  ruby -v: ruby 4.1.0dev (2026-04-01T02:15:31Z pull/16627/merge 55d1fb170f) +ZJIT dev +PRISM [arm64-darwin23]
  make: *** [yes-test-all] Error 1

That particular failure has a complete backtrace:

==> rb_crash_56689.txt <==
/Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:82: [BUG] Segmentation fault at 0x0000000000000000
ruby 4.1.0dev (2026-04-01T02:15:31Z pull/16627/merge 55d1fb170f) +ZJIT dev +PRISM [arm64-darwin23]

-- Crash Report log information --------------------------------------------
   See Crash Report log file in one of the following locations:
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.
Don't forget to include the above Crash Report log file in bug reports.

-- Control frame information -----------------------------------------------
c:0020 p:---- s:0134 e:000133 l:y b:---- r:0x0 CFUNC  :encode
c:0019 p:0040 s:0129 e:000127 l:n b:---- r:0x600009154d20 BLOCK  /Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:82 [FINISH]
c:0018 p:0027 s:0122 e:000121 l:y b:0001 r:0x600001157bc0 METHOD <internal:array>:227 [FINISH]
c:0017 p:0009 s:0117 e:000116 l:n b:---- r:0x600009156c80 BLOCK  /Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:79 [FINISH]
c:0016 p:0024 s:0113 e:000112 l:y b:0001 r:0x60000915a0c0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/envutil.rb:336 [FINISH]
c:0015 p:0046 s:0108 e:000107 l:y b:0001 r:0x60000915a3a0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/envutil.rb:350 [FINISH]
c:0014 p:0019 s:0101 e:000100 l:y b:0001 r:0x600009156e00 METHOD /Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:77
c:0013 p:0037 s:0097 e:000096 l:y b:0001 r:0x0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/test/unit/testcase.rb:202
c:0012 p:0052 s:0091 E:000700 l:y b:0001 r:0x0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/test/unit/testcase.rb:170
c:0011 p:0093 s:0082 e:000081 l:n b:---- r:0x0 BLOCK  /Users/runner/work/ruby/ruby/src/tool/lib/test/unit.rb:1665
c:0010 p:0032 s:0075 e:000074 l:y b:0001 r:0x0 METHOD <internal:array>:247
c:0009 p:0114 s:0068 e:000067 l:y b:0001 r:0x0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/test/unit.rb:1652
c:0008 p:0035 s:0056 e:000055 l:y b:0001 r:0x0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/test/unit.rb:1356
c:0007 p:0069 s:0049 E:002278 l:y b:0001 r:0x0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:52 [FINISH]
c:0006 p:0007 s:0033 e:000032 l:n b:---- r:0x600001098d60 BLOCK  /Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:24
c:0005 p:0032 s:0029 e:000028 l:y b:0001 r:0x0 METHOD <internal:array>:247 [FINISH]
c:0004 p:0005 s:0022 e:000021 l:y b:0001 r:0x600001098cc0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:23
c:0003 p:0210 s:0016 E:002188 l:y b:0001 r:0x0 METHOD /Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:122
c:0002 p:0062 s:0006 E:000a58 l:n b:---- r:0x0 EVAL   /Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:220 [FINISH]
c:0001 p:0000 s:0003 E:000778 l:y b:---- r:0x0 DUMMY  [FINISH]

-- Ruby level backtrace information ----------------------------------------
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:220:in '<main>'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:122:in 'run'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:23:in '_run_suites'
<internal:array>:247:in 'map'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:24:in 'block in _run_suites'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit/parallel.rb:52:in '_run_suite'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit.rb:1356:in '_run_suite'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit.rb:1652:in '_run_suite'
<internal:array>:247:in 'map'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit.rb:1665:in 'block in _run_suite'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit/testcase.rb:170:in 'run'
/Users/runner/work/ruby/ruby/src/tool/lib/test/unit/testcase.rb:202:in 'run_test'
/Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:77:in 'test_to_s_under_gc_compact_stress'
/Users/runner/work/ruby/ruby/src/tool/lib/envutil.rb:350:in 'under_gc_compact_stress'
/Users/runner/work/ruby/ruby/src/tool/lib/envutil.rb:336:in 'under_gc_stress'
/Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:79:in 'block in test_to_s_under_gc_compact_stress'
<internal:array>:227:in 'each'
/Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:82:in 'block (2 levels) in test_to_s_under_gc_compact_stress'
/Users/runner/work/ruby/ruby/src/test/ruby/test_regexp.rb:82:in 'encode'

-- Threading information ---------------------------------------------------
Total ractor count: 1
Ruby thread count for this ractor: 4

-- Machine register context ------------------------------------------------
  x0: 0x0000000000000000  x1: 0x0000000000000000  x2: 0x0000000000000005
  x3: 0x0000000000000008  x4: 0x0000000100cd7b84  x5: 0x0000000101cabf48
  x6: 0x0000000000000000  x7: 0x0000000000000000 x18: 0x0000000000000000
 x19: 0x000000011c62c000 x20: 0x0000000003a90000 x21: 0x0000000000000000
 x22: 0x0000000148276ab8 x23: 0x0000600005556b68 x24: 0x0000000000000000
 x25: 0x0000000000000003 x26: 0x0000000000000000 x27: 0x0000000130f95ae0
 x28: 0x0000000132b5d040  lr: 0x0000000100f33e84  fp: 0x000000016f2073c0
  sp: 0x000000016f2073b0

-- C level backtrace information -------------------------------------------
/Users/runner/work/ruby/ruby/build/ruby(rb_vm_bugreport+0xbe0) [0x100eb86a8] ../src/vm_dump.c:1456
/Users/runner/work/ruby/ruby/build/ruby(rb_vm_bugreport) (null):0
/Users/runner/work/ruby/ruby/build/ruby(rb_bug_for_fatal_signal+0x11c) [0x100caf894] ../src/error.c:1140
/Users/runner/work/ruby/ruby/build/ruby(check_stack_overflow+0x0) [0x100df9444] ../src/signal.c:948
/Users/runner/work/ruby/ruby/build/ruby(sigsegv) ../src/signal.c:947
/usr/lib/system/libsystem_platform.dylib(_sigtramp+0x38) [0x19a22b584]
/Users/runner/work/ruby/ruby/build/ruby(rb_jit_mark_executable+0x24) [0x100f33e84] ../src/jit.c:780
/Users/runner/work/ruby/ruby/build/ruby(mark_executable+0x2c) [0x100fedea4] zjit/src/virtualmem.rs:324
/Users/runner/work/ruby/ruby/build/ruby(0x1010a78d4) [0x1010a78d4]
/Users/runner/work/ruby/ruby/build/ruby(0x10102722c) [0x10102722c]
/Users/runner/work/ruby/ruby/build/ruby(iseq_version_update_references+0x250) [0x10108af34] zjit/src/gc.rs:179
/Users/runner/work/ruby/ruby/build/ruby(iseq_update_references+0x68) [0x10108acd4] zjit/src/gc.rs:135
/Users/runner/work/ruby/ruby/build/ruby({closure#0}+0x18) [0x100fe7524] zjit/src/gc.rs:44
/Users/runner/work/ruby/ruby/build/ruby(with_time_stat<zjit::gc::rb_zjit_iseq_update_references::{closure_env#0}, ()>+0x70) [0x10108a0fc] zjit/src/stats.rs:985
/Users/runner/work/ruby/ruby/build/ruby(rb_zjit_iseq_update_references+0x8c) [0x10108b460] zjit/src/gc.rs:44
/Users/runner/work/ruby/ruby/build/ruby(rb_iseq_mark_and_move+0x558) [0x100d1c1b0] ../src/iseq.c:429
/Users/runner/work/ruby/ruby/build/ruby(rb_gc_update_object_references+0x320) [0x100cdaae4] ../src/gc.c:4345
/Users/runner/work/ruby/ruby/build/ruby(gc_ref_update) ../src/gc/default/default.c:0
/Users/runner/work/ruby/ruby/build/ruby(gc_update_references) ../src/gc/default/default.c:7162
/Users/runner/work/ruby/ruby/build/ruby(gc_compact_finish) ../src/gc/default/default.c:3462
/Users/runner/work/ruby/ruby/build/ruby(gc_sweep_compact) ../src/gc/default/default.c:5687
/Users/runner/work/ruby/ruby/build/ruby(gc_sweep) ../src/gc/default/default.c:4143
/Users/runner/work/ruby/ruby/build/ruby(gc_prof_timer_stop+0x0) [0x100ce14fc] ../src/gc/default/default.c:6507
/Users/runner/work/ruby/ruby/build/ruby(gc_start) ../src/gc/default/default.c:6510
/Users/runner/work/ruby/ruby/build/ruby(garbage_collect+0x74) [0x100ce189c] ../src/gc/default/default.c:6388
/Users/runner/work/ruby/ruby/build/ruby(rb_gc_impl_malloc+0xdc) [0x100ce58ac] ../src/gc/default/default.c:6786
/Users/runner/work/ruby/ruby/build/ruby(handle_malloc_failure+0x0) [0x100cd1f10] ../src/gc.c:5373
/Users/runner/work/ruby/ruby/build/ruby(ruby_xmalloc) ../src/gc.c:5355
/Users/runner/work/ruby/ruby/build/ruby(rb_econv_add_transcoder_at+0x54) [0x100e649cc] ../src/transcode.c:956
/Users/runner/work/ruby/ruby/build/ruby(rb_econv_open_by_transcoder_entries+0x84) [0x100e5e63c] ../src/transcode.c:999
/Users/runner/work/ruby/ruby/build/ruby(rb_econv_open0) ../src/transcode.c:1050
/Users/runner/work/ruby/ruby/build/ruby(rb_econv_open) ../src/transcode.c:1117
/Users/runner/work/ruby/ruby/build/ruby(transcode_loop+0x18) [0x100e61154] ../src/transcode.c:2394
/Users/runner/work/ruby/ruby/build/ruby(str_transcode0) ../src/transcode.c:2876
/Users/runner/work/ruby/ruby/build/ruby(str_encode+0x30) [0x100e6275c] ../src/transcode.c:2972
/Users/runner/work/ruby/ruby/build/ruby(vm_call_cfunc_with_frame_+0xfc) [0x100ea4f70] ../src/vm_insnhelper.c:3914
/Users/runner/work/ruby/ruby/build/ruby(vm_sendish+0x6f4) [0x100e7bca0]
/Users/runner/work/ruby/ruby/build/ruby(rb_vm_opt_send_without_block+0x48) [0x100e7c9d8] ../src/vm_insnhelper.c:6187

Failures on master:
https://github.com/ruby/ruby/actions/runs/23783327741/job/69300666897
https://github.com/ruby/ruby/actions/runs/23820891494/job/69432607458
https://github.com/ruby/ruby/actions/runs/23814309788/job/69409559553
https://github.com/ruby/ruby/actions/runs/23831750322/job/69466634541

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions