Skip to content

Segmentation fault when using it var in rescue block in tests #55108

@scarhand

Description

@scarhand

Steps to reproduce

Can't reproduce it using the generic bug template, only by running rails test in a rails project. I'm probably holding it wrong by using the it block var in a different block scope, but it shouldn't segfault.

class SegfaultTest < ActiveSupport::TestCase
  test "segfaults" do
    [1].each do
      begin
        puts it
      rescue => e
        puts it
      end
    end
  end
end

Rails 7.2.2 repo with the segfaulting test case here: https://github.com/scarhand/rails-test-segfault

Expected behavior

It should raise an error that assertions are missing, but it should not segfault.

Actual behavior

/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:46: [BUG] Segmentation fault at 0x0000000000000001
ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +YJIT +PRISM [x86_64-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:0028 p:---- s:0184 e:000183 CFUNC  :to_binary
c:0027 p:0008 s:0180 e:000179 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:46 [FINISH]
c:0026 p:---- s:0174 e:000173 CFUNC  :fetch
c:0025 p:0024 s:0166 e:000165 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:64
c:0024 p:0023 s:0159 e:000158 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:89 [FINISH]
c:0023 p:---- s:0153 e:000152 CFUNC  :require
c:0022 p:0054 s:0148 e:000147 BLOCK  /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82
c:0021 p:0139 s:0141 e:000140 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_requir [FINISH]
c:0020 p:0057 s:0132 e:000131 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34
c:0019 p:0014 s:0124 e:000123 BLOCK  /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/test_unit/runner.rb:62 [FINISH]
c:0018 p:---- s:0116 e:000115 CFUNC  :each
c:0017 p:0021 s:0112 e:000111 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/test_unit/runner.rb:60
c:0016 p:0009 s:0105 e:000104 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/test_unit/runner.rb:52
c:0015 p:0041 s:0100 e:000099 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/commands/test/test_command.rb:33
c:0014 p:0054 s:0094 e:000093 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/thor-1.3.2/lib/thor/command.rb:28
c:0013 p:0040 s:0086 e:000085 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/thor-1.3.2/lib/thor/invocation.rb:127
c:0012 p:0031 s:0079 e:000078 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:178
c:0011 p:0213 s:0072 e:000071 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/thor-1.3.2/lib/thor.rb:538
c:0010 p:0048 s:0059 e:000058 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:73
c:0009 p:0025 s:0052 e:000051 BLOCK  /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command.rb:71
c:0008 p:0015 s:0049 e:000048 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command.rb:149
c:0007 p:0048 s:0043 e:000042 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command.rb:69
c:0006 p:0038 s:0032 e:000031 TOP    /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/commands.rb:18 [FINISH]
c:0005 p:---- s:0027 e:000026 CFUNC  :require
c:0004 p:0054 s:0022 e:000021 BLOCK  /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82
c:0003 p:0139 s:0015 e:000014 METHOD /Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_requir
c:0002 p:0024 s:0006 e:000005 EVAL   bin/rails:4 [FINISH]
c:0001 p:0000 s:0003 E:0003b0 DUMMY  [FINISH]

-- Ruby level backtrace information ----------------------------------------
bin/rails:4:in '<main>'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in 'require'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'block (2 levels) in replace_require'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'require'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in '<main>'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command.rb:69:in 'invoke'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command.rb:149:in 'with_argv'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command.rb:71:in 'block in invoke'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in 'perform'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/thor-1.3.2/lib/thor.rb:538:in 'dispatch'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in 'invoke_command'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in 'invoke_command'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/thor-1.3.2/lib/thor/command.rb:28:in 'run'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/commands/test/test_command.rb:33:in 'perform'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/test_unit/runner.rb:52:in 'run'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/test_unit/runner.rb:60:in 'load_tests'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/test_unit/runner.rb:60:in 'each'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/railties-7.2.2.1/lib/rails/test_unit/runner.rb:62:in 'block in load_tests'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/zeitwerk-2.7.3/lib/zeitwerk/core_ext/kernel.rb:34:in 'require'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in 'require'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'block (2 levels) in replace_require'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/3.4.0/bundled_gems.rb:82:in 'require'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:89:in 'load_iseq'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:64:in 'fetch'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:64:in 'fetch'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:46:in 'input_to_storage'
/Users/scarhand/.rbenv/versions/3.4.1/lib/ruby/gems/3.4.0/gems/bootsnap-1.18.6/lib/bootsnap/compile_cache/iseq.rb:46:in 'to_binary'

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

-- Machine register context ------------------------------------------------
 rax: 0x0000000000000000 rbx: 0x000000010f3bf3c0 rcx: 0x000000010f9a26b0
 rdx: 0x0000000000000000 rdi: 0x0000000000000000 rsi: 0x000000010f3bf3c0
 rbp: 0x00007ff7b0cc0d50 rsp: 0x00007ff7b0cc0d20  r8: 0xffffffffffffffe8
  r9: 0x0000000000000000 r10: 0x0000000000000018 r11: 0xffffffc09c739b4d
 r12: 0x00007ff7b0cc0f08 r13: 0x00007ff7b0cc0f20 r14: 0x0000000000000000
 r15: 0x0000000000000000 rip: 0x000000010fb4dfc0 rfl: 0x0000000000010283

-- C level backtrace information -------------------------------------------
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(rb_vm_bugreport+0x9bd) [0x10fbd9c9d]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(rb_bug_for_fatal_signal+0x148) [0x10f9f4a38]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(sigsegv+0x4e) [0x10fb2f8fe]
/usr/lib/system/libsystem_platform.dylib(_sigtramp+0x1d) [0x7ff8071b325d]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(rb_str_cmp+0x20) [0x10fb4dfc0]
/usr/lib/system/libsystem_c.dylib(_isort+0x87) [0x7ff80702749c]
[0x7ff80704c8b3]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_ruby_qsort+0x2e) [0x10fb97bee]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_ibf_dump_outer_variables+0xfe) [0x10f9a242e]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_ibf_dump_iseq_list_i+0xe0b) [0x10f9a186b]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_st_general_foreach+0xca) [0x10fb38f3a]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_rb_st_foreach+0x33) [0x10fb39653]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_ibf_dump_iseq_list+0x4f) [0x10f97078f]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_rb_iseq_ibf_dump+0x17e) [0x10f97050e]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_vm_call_cfunc_with_frame_+0x134) [0x10fbcaea4]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_vm_exec_core+0x2f58) [0x10fbacaa8]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_rb_vm_exec+0x1ac) [0x10fba86bc]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_rb_funcallv_scope+0x2a4) [0x10fbb89b4]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_rb_funcall+0x2df) [0x10fbb908f]
/Users/scarhand/.rbenv/versions/3.4.1/lib/libruby.3.4.dylib(_rb_protect+0xcb) [0x10fa00e0b]
[0x10f3a24c1]

System configuration

Rails version: 7.2.2

Ruby version: 3.4.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions