Skip to content

Conversation

@jhawthorn
Copy link
Member

Found by wbcheck

  3) Failure:
TestNamespace#test_loading_extension_libs_in_main_namespace [/home/jhawthorn/src/ruby/test/ruby/test_namespace.rb:762]:
pid 3551787 killed by SIGABRT (signal 6)
| /home/jhawthorn/src/ruby/ruby: warning: Namespace is experimental, and the behavior may change in the future!
| See doc/namespace.md for known issues, etc.
| WBCHECK ERROR: Missed write barrier detected!
|   Parent object: 0x7cf2c8fe1cc0 (wb_protected: true)
|     rb_obj_info_dump: 0x00007cf2c8fe1cc0 T_ICLASS/src:Kernel
|   Reference counts - snapshot: 7, writebarrier: 1, current: 119, missed: 110
|   Missing reference to: 0x7c12c8feaa50
|     rb_obj_info_dump: 0x00007c12c8feaa50 T_IMEMO/<ment> :singleton_class (pub) type:cfunc aliased:0 owner:0x00007cf2c8fe1b40 defined_class:0x0000000000000000
|   Missing reference to: 0x7c12c8feab50
|     rb_obj_info_dump: 0x00007c12c8feab50 T_IMEMO/<ment> :dup (pub) type:cfunc aliased:0 owner:0x00007cf2c8fe1b40 defined_class:0x0000000000000000
|   Missing reference to: 0x7c12c8feac50
|     rb_obj_info_dump: 0x00007c12c8feac50 T_IMEMO/<ment> :itself (pub) type:cfunc aliased:0 owner:0x00007cf2c8fe1b40 defined_class:0x0000000000000000
|   Missing reference to: 0x7c12c8feb050
|     rb_obj_info_dump: 0x00007c12c8feb050 T_IMEMO/<ment> :methods (pub) type:cfunc aliased:0 owner:0x00007cf2c8fe1b40 defined_class:0x0000000000000000
|   Missing reference to: 0x7c12c8feb110
|     rb_obj_info_dump: 0x00007c12c8feb110 T_IMEMO/<ment> :singleton_methods (pub) type:cfunc aliased:0 owner:0x00007cf2c8fe1b40 defined_class:0x0000000000000000
|   Missing reference to: 0x7c12c8feb1d0
|     rb_obj_info_dump: 0x00007c12c8feb1d0 T_IMEMO/<ment> :protected_methods (pub) type:cfunc aliased:0 owner:0x00007cf2c8fe1b40 defined_class:0x0000000000000000
|   Missing reference to: 0x7c12c8feb2d0
|     rb_obj_info_dump: 0x00007c12c8feb2d0 T_IMEMO/<ment> :private_methods (pub) type:cfunc aliased:0 owner:0x00007cf2c8fe1b40 defined_class:0x0000000000000000
|   Missing reference to: 0x7c12c8feb3d0
(many many more)

It seems like here the classext was associated with the class, but it already had Ruby objects attached.

rb_gc_writebarrier_remember works around that issue, but I suspect if we enabled autocompaction the values copied into the classext before it was attached could be broken.

Found by wbcheck

It seems like here the classext was associated with the class, but it
already had Ruby objects attached.

rb_gc_writebarrier_remember works around that issue, but I suspect if we
enabled autocompaction the values copied into the classext before it was
attached could be broken.
@jhawthorn jhawthorn requested a review from tagomoris November 5, 2025 01:28
@launchable-app
Copy link

launchable-app bot commented Nov 5, 2025

1/66810 Tests Failed

test/ruby/test_gc.rb#test_thrashing_for_young_objects
Failure:
TestGc#test_thrashing_for_young_objects [/home/runner/work/ruby/ruby/src/test/ruby/test_gc.rb:644]:
pid 73887 killed by SIGABRT (signal 6) (core dumped)
| We are killing the stack canary set by invokeblock, at <RubyVM::InstructionSequence:times@<internal:numeric>:250>@pc=22
| watch out the C stack trace.
| == disasm: #<ISeq:times@<internal:numeric>:250 (250,2)-(261,5)> INLINE_BLOCK
| local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
| [ 1] i@0
| 0000 putnil                                                           ( 252)[LiCa]
| 0001 defined                                yield, false, true
| 0005 branchif                               11
| 0007 opt_invokebuiltin_delegate_leave       <builtin!_bi253/0>, 0     ( 253)[Li]
| 0010 leave                                  [Re]
| 0011 putobject_INT2FIX_0_                                             ( 255)[Li]
| 0012 setlocal_WC_0                          i@0
| 0014 jump                                   31                        ( 256)[Li]
| 0016 putnil
| 0017 pop
| 0018 jump                                   31
| 0020 getlocal_WC_0                          i@0                       ( 257)[Li]
| 0022 invokeblock                            <calldata!argc:1, ARGS_SIMPLE>
| 0024 pop
| 0025 getlocal_WC_0                          i@0                       ( 258)[Li]
| 0027 opt_succ                               <calldata!mid:succ, argc:0, ARGS_SIMPLE>[CcCr]
| 0029 setlocal_WC_0                          i@0
| 0031 getlocal_WC_0                          i@0                       ( 256)
| 0033 putself
| 0034 opt_lt                                 <calldata!mid:<, argc:1, ARGS_SIMPLE>[CcCr]
| 0036 branchif                               20
| 0038 putnil
| 0039 pop
| 0040 putself                                                          ( 260)[Li]
| 0041 leave                                                            ( 261)[Re]
| <internal:numeric>:257: [BUG] see above.
| ruby 3.5.0dev (2025-11-05T01:28:46Z pull/15058/merge d2757e5a77) +PRISM [i686-linux-gnu]
| 
| -- Control frame information -----------------------------------------------
| c:0003 p:0024 s:0016 e:000015 l:y n:0001 METHOD <internal:numeric>:257
| c:0002 p:0047 s:0011 E:000d4c l:n n:---- EVAL   -:10 [FINISH]
| c:0001 p:0000 s:0003 E:001c88 l:y n:---- DUMMY  [FINISH]
| 
| -- Ruby level backtrace information ----------------------------------------
| -:10:in '<main>'
| <internal:numeric>:257:in 'times'
| 
| -- Threading information ---------------------------------------------------
| Total ractor count: 1
| Ruby thread count for this ractor: 1
| 
| -- C level backtrace information -------------------------------------------
| /home/runner/work/ruby/ruby/build/ruby(rb_print_backtrace+0xb) [0x622da2c8] ../src/vm_dump.c:1102
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_bugreport) ../src/vm_dump.c:1447
| /home/runner/work/ruby/ruby/build/ruby(bug_report_end+0x0) [0x62294a62] ../src/error.c:1097
| /home/runner/work/ruby/ruby/build/ruby(rb_bug_without_die_internal) ../src/error.c:1097
| /home/runner/work/ruby/ruby/build/ruby(die+0x0) [0x61fc39ea] ../src/error.c:1115
| /home/runner/work/ruby/ruby/build/ruby(rb_bug) ../src/error.c:1117
| [0x62174fab]
| /home/runner/work/ruby/ruby/build/ruby(vm_push_frame+0xc2) [0x6217b982] ../src/vm_insnhelper.c:390
| /home/runner/work/ruby/ruby/build/ruby(vm_invoke_iseq_block+0xe2) [0x62188742] ../src/vm_insnhelper.c:5393
| /home/runner/work/ruby/ruby/build/ruby(vm_invokeblock_i+0x5d) [0x6218b8ed] ../src/vm_insnhelper.c:5517
| /home/runner/work/ruby/ruby/build/ruby(vm_exec_core+0x1974) [0x6219a314] ../src/vm_insnhelper.c:6115
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_exec+0xbe) [0x6218bd1e] ../src/vm.c:2784
| /home/runner/work/ruby/ruby/build/ruby(rb_ec_exec_node+0xcb) [0x61fc935b] ../src/eval.c:283
| /home/runner/work/ruby/ruby/build/ruby(ruby_run_node+0x89) [0x61fcd739] ../src/eval.c:321
| /home/runner/work/ruby/ruby/build/ruby(rb_main+0x21) [0x61fc5ec6] ../src/main.c:42
| /home/runner/work/ruby/ruby/build/ruby(main) ../src/main.c:62
| /lib/i386-linux-gnu/libc.so.6(0xf4e84519) [0xf4e84519]
| /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0x93) [0xf4e845f3]
| [0x61fc5f1b]
| 
| -- Other runtime information -----------------------------------------------
| 
| * Loaded script: -
| 
| * Namespace: disabled
| * Loaded features:
| 
|     0 enumerator.so
|     1 thread.rb
|     2 fiber.so
|     3 rational.so
|     4 complex.so
|     5 pathname.so
|     6 ruby2_keywords.rb
|     7 set.rb
|     8 /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
|     9 /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
|    10 /home/runner/work/ruby/ruby/src/lib/open3/version.rb
|    11 /home/runner/work/ruby/ruby/src/lib/open3.rb
|    12 /home/runner/work/ruby/ruby/src/lib/timeout.rb
|    13 /home/runner/work/ruby/ruby/build/rbconfig.rb
|    14 /home/runner/work/ruby/ruby/src/tool/lib/find_executable.rb
|    15 /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
|    16 /home/runner/work/ruby/ruby/src/tool/lib/envutil.rb
|    17 /home/runner/work/ruby/ruby/src/tool/lib/colorize.rb
|    18 /home/runner/work/ruby/ruby/src/tool/lib/leakchecker.rb
|    19 /home/runner/work/ruby/ruby/src/lib/prettyprint.rb
|    20 /home/runner/work/ruby/ruby/src/lib/pp.rb
|    21 /home/runner/work/ruby/ruby/src/tool/lib/test/unit/assertions.rb
|    22 /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/sanitizers.so
|    23 /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
|    24 /home/runner/work/ruby/ruby/src/tool/lib/core_assertions.rb
|    25 /home/runner/work/ruby/ruby/src/tool/lib/test/unit/testcase.rb
|    26 /home/runner/work/ruby/ruby/src/lib/optparse.rb
|    27 /home/runner/work/ruby/ruby/src/tool/lib/test/unit.rb
| 
| * Process memory map:
| 
| 61f72000-61f8f000 r--p 00000000 08:11 295606                             /home/runner/work/ruby/ruby/build/ruby
| 61f8f000-62351000 r-xp 0001d000 08:11 295606                             /home/runner/work/ruby/ruby/build/ruby
| 62351000-625b3000 r--p 003df000 08:11 295606                             /home/runner/work/ruby/ruby/build/ruby
| 625b3000-625b9000 r--p 00640000 08:11 295606                             /home/runner/work/ruby/ruby/build/ruby
| 625b9000-625ba000 rw-p 00646000 08:11 295606                             /home/runner/work/ruby/ruby/build/ruby
| 625ba000-625c2000 rw-p 00000000 00:00 0 
| 63dfc000-64125000 rw-p 00000000 00:00 0                                  [heap]
| e0c56000-e0e83000 r--s 00000000 08:11 99654                              /usr/lib/i386-linux-gnu/libc.so.6
| e0e83000-e2ac9000 r--s 00000000 08:11 295606                             /home/runner/work/ruby/ruby/build/ruby
| e2ac9000-e2acc000 r--p 00000000 08:11 99626                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| e2acc000-e2ae9000 r-xp 00003000 08:11 99626                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| e2ae9000-e2aee000 r--p 00020000 08:11 99626                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| e2aee000-e2aef000 r--p 00024000 08:11 99626                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| e2aef000-e2af0000 rw-p 00025000 08:11 99626                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| e2af0000-e2ca0000 rw-p 00000000 00:00 0 
| e2ca3000-e2d20000 rw-p 00000000 00:00 0 
| e2d20000-e2dc0000 rw-p 00000000 00:00 0 
| e2dd0000-e2f60000 rw-p 00000000 00:00 0 
| e2f61000-e2f82000 rw-p 00000000 00:00 0 
| e2f93000-e2f95000 r--p 00000000 08:11 295339                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| e2f95000-e2f9b000 r-xp 00002000 08:11 295339                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| e2f9b000-e2f9e000 r--p 00008000 08:11 295339                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| e2f9e000-e2f9f000 r--p 0000a000 08:11 295339                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| e2f9f000-e2fa0000 rw-p 0000b000 08:11 295339                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| e2fa0000-e3070000 rw-p 00000000 00:00 0 
| e3073000-e3074000 r--p 00000000 08:11 295203                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/sanitizers.so
| e3074000-e3075000 r-xp 00001000 08:11 295203                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/sanitizers.so
| e3075000-e3076000 r--p 00002000 08:11 295203                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/sanitizers.so
| e3076000-e3077000 r--p 00002000 08:11 295203                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/sanitizers.so
| e3077000-e3078000 rw-p 00003000 08:11 295203                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/sanitizers.so
| e3078000-e3079000 r--p 00000000 08:11 295411                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| e3079000-e307b000 r-xp 00001000 08:11 295411                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| e307b000-e307d000 r--p 00003000 08:11 295411                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| e307d000-e307e000 r--p 00004000 08:11 295411                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| e307e000-e307f000 rw-p 00005000 08:11 295411                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| e307f000-e3080000 ---p 00000000 00:00 0 
| e3080000-e30a1000 rw-p 00000000 00:00 0 
| e30a1000-e30a2000 ---p 00000000 00:00 0 
| e30a2000-e30c3000 rw-p 00000000 00:00 0 
| e30c3000-e30c4000 ---p 00000000 00:00 0 
| e30c4000-e30e5000 rw-p 00000000 00:00 0 
| e30e5000-e30e6000 ---p 00000000 00:00 0 
| e30e6000-e3107000 rw-p 00000000 00:00 0 
| e3107000-e3108000 ---p 00000000 00:00 0 
| e3108000-e3129000 rw-p 00000000 00:00 0 
| e3129000-e312a000 ---p 00000000 00:00 0 
| e312a000-e314b000 rw-p 00000000 00:00 0 
| e314b000-e314c000 ---p 00000000 00:00 0 
| e314c000-e316d000 rw-p 00000000 00:00 0 
| e316d000-e316e000 ---p 00000000 00:00 0 
| e316e000-e318f000 rw-p 00000000 00:00 0 
| e318f000-e3190000 ---p 00000000 00:00 0 
| e3190000-e4190000 rw-p 00000000 00:00 0 
| e4190000-f4e63000 rw-p 00000000 00:00 0 
| f4e63000-f4e83000 r--p 00000000 08:11 99654                              /usr/lib/i386-linux-gnu/libc.so.6
| f4e83000-f5005000 r-xp 00020000 08:11 99654                              /usr/lib/i386-linux-gnu/libc.so.6
| f5005000-f508a000 r--p 001a2000 08:11 99654                              /usr/lib/i386-linux-gnu/libc.so.6
| f508a000-f508b000 ---p 00227000 08:11 99654                              /usr/lib/i386-linux-gnu/libc.so.6
| f508b000-f508d000 r--p 00227000 08:11 99654                              /usr/lib/i386-linux-gnu/libc.so.6
| f508d000-f508e000 rw-p 00229000 08:11 99654                              /usr/lib/i386-linux-gnu/libc.so.6
| f508e000-f5098000 rw-p 00000000 00:00 0 
| f5098000-f50a3000 r--p 00000000 08:11 99657                              /usr/lib/i386-linux-gnu/libm.so.6
| f50a3000-f5165000 r-xp 0000b000 08:11 99657                              /usr/lib/i386-linux-gnu/libm.so.6
| f5165000-f519e000 r--p 000cd000 08:11 99657                              /usr/lib/i386-linux-gnu/libm.so.6
| f519e000-f519f000 r--p 00105000 08:11 99657                              /usr/lib/i386-linux-gnu/libm.so.6
| f519f000-f51a0000 rw-p 00106000 08:11 99657                              /usr/lib/i386-linux-gnu/libm.so.6
| f51a0000-f51a1000 r--p 00000000 08:11 99635                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| f51a1000-f51bb000 r-xp 00001000 08:11 99635                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| f51bb000-f51d7000 r--p 0001b000 08:11 99635                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| f51d7000-f51d8000 r--p 00036000 08:11 99635                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| f51d8000-f51d9000 rw-p 00037000 08:11 99635                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| f51d9000-f51e1000 rw-p 00000000 00:00 0 
| f51e1000-f51e3000 r--p 00000000 08:11 100016                             /usr/lib/i386-linux-gnu/libz.so.1.2.11
| f51e3000-f51f5000 r-xp 00002000 08:11 100016                             /usr/lib/i386-linux-gnu/libz.so.1.2.11
| f51f5000-f51fd000 r--p 00014000 08:11 100016                             /usr/lib/i386-linux-gnu/libz.so.1.2.11
| f51fd000-f51fe000 r--p 0001b000 08:11 100016                             /usr/lib/i386-linux-gnu/libz.so.1.2.11
| f51fe000-f51ff000 rw-p 0001c000 08:11 100016                             /usr/lib/i386-linux-gnu/libz.so.1.2.11
| f5202000-f5203000 r--p 00000000 08:11 294911                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| f5203000-f5204000 r-xp 00001000 08:11 294911                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| f5204000-f5205000 r--p 00002000 08:11 294911                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| f5205000-f5206000 r--p 00002000 08:11 294911                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| f5206000-f5207000 rw-p 00003000 08:11 294911                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| f5207000-f5208000 r--p 00000000 08:11 294849                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| f5208000-f5209000 r-xp 00001000 08:11 294849                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| f5209000-f520a000 r--p 00002000 08:11 294849                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| f520a000-f520b000 r--p 00002000 08:11 294849                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| f520b000-f520c000 rw-p 00003000 08:11 294849                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| f520c000-f520e000 rw-p 00000000 00:00 0 
| f520e000-f5212000 r--p 00000000 00:00 0                                  [vvar]
| f5212000-f5214000 r-xp 00000000 00:00 0                                  [vdso]
| f5214000-f5215000 r--p 00000000 08:11 99651                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| f5215000-f523a000 r-xp 00001000 08:11 99651                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| f523a000-f5249000 r--p 00026000 08:11 99651                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| f5249000-f524b000 r--p 00034000 08:11 99651                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| f524b000-f524c000 rw-p 00036000 08:11 99651                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| ffd73000-ffd96000 rw-p 00000000 00:00 0                                  [stack]
| 
| 


[-> View Test suite health in main branch]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant