Actions
Bug #21444
openCrash in GC after accessing `object_id` (`obj_free` called for broken object)
Status:
Open
Assignee:
-
Target version:
-
ruby -v:
ruby 3.5.0dev (2025-06-18T07:13:12Z master 332f83d1ab) +PRISM [x86_64-linux]
Description
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'rubocop'
end
require 'objspace'
require 'tmpdir'
3.times { GC.start }
GC.disable
Dir.mktmpdir do |dir|
Dir.chdir(dir) do
File.open('Gemfile', 'w') {}
cli = RuboCop::CLI.new
cli.run([])
end
end
ObjectSpace.each_object do |obj|
obj.object_id
end
GC.enable
3.times { GC.start }
This is the smallest I could make it. I try to reduce and it magically starts passing. You may have to run it a few times for it to segfault but it's very reliable for me, just a handful of runs succeed.
The code is adapted to what the memory_profiler
gem does to print its stats.
<internal:gc>:36: [BUG] obj_free() called for broken object
ruby 3.5.0dev (2025-06-18T07:13:12Z master 332f83d1ab) +PRISM [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0005 p:0010 s:0026 e:000021 METHOD <internal:gc>:36
c:0004 p:0004 s:0014 e:000013 BLOCK test.rb:27
c:0003 p:0024 s:0011 e:000010 METHOD <internal:numeric>:257
c:0002 p:0056 s:0006 e:000005 EVAL test.rb:27 [FINISH]
c:0001 p:0000 s:0003 E:000a90 DUMMY [FINISH]
-- Ruby level backtrace information ----------------------------------------
test.rb:27:in '<main>'
<internal:numeric>:257:in 'times'
test.rb:27:in 'block in <main>'
<internal:gc>:36:in 'start'
-- Threading information ---------------------------------------------------
Total ractor count: 1
Ruby thread count for this ractor: 1
-- C level backtrace information -------------------------------------------
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_print_backtrace+0x5) [0x7a80ec1772c6] /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/vm_dump.c:843
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_vm_bugreport) /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/vm_dump.c:1175
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_bug_without_die_internal+0x71) [0x7a80ebe51a03] /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/error.c:1097
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_bug) /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/error.c:1115
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_gc_obj_free+0xe) [0x7a80ebe52581] /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/gc.c:1265
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(gc_sweep_plane+0xad) [0x7a80ebf65c2a] gc/default/default.c:3476
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(gc_sweep_page) gc/default/default.c:3561
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(gc_sweep_step) gc/default/default.c:3842
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(gc_sweep_rest+0xb) [0x7a80ebf6833b] gc/default/default.c:3910
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(gc_sweep) gc/default/default.c:4080
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(gc_start+0xbc4) [0x7a80ebf6ab84] gc/default/default.c:6426
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_multi_ractor_p+0x0) [0x7a80ebf6e219] gc/default/default.c:6307
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_vm_lock_leave) ./vm_sync.h:101
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_gc_vm_unlock) /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/gc.c:144
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(garbage_collect) gc/default/default.c:6309
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_gc_impl_start) gc/default/default.c:6759
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(gc_start_internal) /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/gc.c:3479
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(vm_exec_core+0x4f6) [0x7a80ec1580e6] /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/vm_insnhelper.c:7412
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(vm_exec_loop+0x72) [0x7a80ec15e9fa] /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/vm.c:2652
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_vm_exec) /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/vm.c:2631
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(rb_ec_exec_node+0x99) [0x7a80ebf3e999] /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/eval.c:281
/home/user/.rbenv/versions/ruby-dev/lib/libruby.so.3.5(ruby_run_node+0x83) [0x7a80ebf44f43] /tmp/ruby-build.20250618094201.28027.3MG6OR/ruby-master/eval.c:319
/home/user/.rbenv/versions/ruby-dev/bin/ruby(rb_main+0x21) [0x61c4abdb1100] ./main.c:42
/home/user/.rbenv/versions/ruby-dev/bin/ruby(main) ./main.c:62
/usr/lib/libc.so.6(0x7a80ebb3f6b5) [0x7a80ebb3f6b5]
/usr/lib/libc.so.6(__libc_start_main+0x89) [0x7a80ebb3f769]
[0x61c4abdb1145]
Files
No data to display
Actions
Like0