Skip to content

Make test-bundled-gems.rb detect test failure propery even when child process timed out on Windows#14695

Draft
YO4 wants to merge 1 commit intoruby:masterfrom
YO4:kill-and-fail
Draft

Make test-bundled-gems.rb detect test failure propery even when child process timed out on Windows#14695
YO4 wants to merge 1 commit intoruby:masterfrom
YO4:kill-and-fail

Conversation

@YO4
Copy link
Copy Markdown
Contributor

@YO4 YO4 commented Oct 1, 2025

I posted new PR #14718 and I think that PR supersedes this.

test-bundled-gems.rb terminates child process with Process.kill("KILL", pid) if that timed out on Windows.
Unfortunately, child process exits with 0 in that case, test-bundled-gems.rb misses to detect failure.

This PR changes process termination method to system("taskkill /F /PID #{pid}") and child process is turned into exiting with 1.

Changing the behavior of Process::kill is also a possible option, but it is not addressed in this PR.

The child process killed by SIGKILL returns 0 on Windows
@launchable-app
Copy link
Copy Markdown

launchable-app bot commented Oct 1, 2025

1/62390 Tests Failed

file=test/ruby/test_gc.rb#class=TestGc#testcase=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 94632 killed by SIGABRT (signal 6) (core dumped)
| ../src/object.c:288: Assertion Failed: fake_class_p:RB_TYPE_P(klass, T_CLASS) || RB_TYPE_P(klass, T_MODULE) || RB_TYPE_P(klass, T_ICLASS)
| ruby 3.5.0dev (2025-10-01T14:48:22Z pull/14695/merge 123c94c88c) +PRISM [i686-linux-gnu]
| 
| -- Control frame information -----------------------------------------------
| c:0006 p:---- s:0027 e:000026 IFUNC 
| c:0005 p:0024 s:0024 e:000022 METHOD <internal:numeric>:257 [FINISH]
| c:0004 p:---- s:0018 e:000017 CFUNC  :each
| c:0003 p:---- s:0015 e:000014 CFUNC  :map
| c:0002 p:0039 s:0011 E:00237c EVAL   -:7 [FINISH]
| c:0001 p:0000 s:0003 E:0018d8 DUMMY  [FINISH]
| 
| -- Ruby level backtrace information ----------------------------------------
| -:7:in '<main>'
| -:7:in 'map'
| -:7:in 'each'
| <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) [0x5f0690b8] ../src/vm_dump.c:845
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_bugreport) ../src/vm_dump.c:1178
| /home/runner/work/ruby/ruby/build/ruby(rb_assert_failure_detail+0xdb) [0x5ed53266] ../src/error.c:1215
| /home/runner/work/ruby/ruby/build/ruby(RB_BUILTIN_TYPE+0x0) [0x5ed53299] ../src/error.c:1191
| /home/runner/work/ruby/ruby/build/ruby(rb_assert_failure) (null):0
| /home/runner/work/ruby/ruby/build/ruby(fake_class_p+0x0) [0x5ed2b299] ../src/object.c:288
| /home/runner/work/ruby/ruby/build/ruby(class_real) ../src/object.c:299
| /home/runner/work/ruby/ruby/build/ruby(rb_class_real) ../src/object.c:309
| /home/runner/work/ruby/ruby/build/ruby(rb_class_allocate_instance) ../src/object.c:141
| /home/runner/work/ruby/ruby/build/ruby(displaying_class_of+0x26) [0x5f021c86] ../src/error.c:1271
| /home/runner/work/ruby/ruby/build/ruby(rb_check_typeddata+0x23) [0x5f026a43] ../src/error.c:1402
| /home/runner/work/ruby/ruby/build/ruby(iseqw_new+0x27) [0x5edbe337] ../src/iseq.c:1559
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_check_canary+0x6b) [0x5ef05d1b] ../src/vm_insnhelper.c:279
| /home/runner/work/ruby/ruby/build/ruby(vm_push_frame+0xc2) [0x5ef0aa22] ../src/vm_insnhelper.c:390
| /home/runner/work/ruby/ruby/build/ruby(invoke_iseq_block_from_c+0x15a) [0x5ef1e937] ../src/vm.c:1662
| /home/runner/work/ruby/ruby/build/ruby(invoke_block_from_c_bh) ../src/vm.c:1754
| /home/runner/work/ruby/ruby/build/ruby(vm_yield_with_cref+0x4b) [0x5ef1f5db] ../src/vm.c:1791
| /home/runner/work/ruby/ruby/build/ruby(vm_yield) ../src/vm.c:1799
| /home/runner/work/ruby/ruby/build/ruby(rb_yield_values2) ../src/vm_eval.c:1362
| /home/runner/work/ruby/ruby/build/ruby(collect_i+0x20) [0x5f00c800] ../src/enum.c:628
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_pop_frame+0x0) [0x5ef1876a] ../src/vm_insnhelper.c:5275
| /home/runner/work/ruby/ruby/build/ruby(vm_yield_with_cfunc) ../src/vm_insnhelper.c:5276
| /home/runner/work/ruby/ruby/build/ruby(vm_invoke_ifunc_block+0xb0) [0x5ef188a0] ../src/vm_insnhelper.c:5465
| /home/runner/work/ruby/ruby/build/ruby(vm_invokeblock_i+0x5d) [0x5ef1a99d] ../src/vm_insnhelper.c:5520
| /home/runner/work/ruby/ruby/build/ruby(vm_sendish+0xde) [0x5ef1aabe] ../src/vm_insnhelper.c:6118
| /home/runner/work/ruby/ruby/build/ruby(vm_exec_core+0x189d) [0x5ef294dd] /home/runner/work/ruby/ruby/build/insns.def:1141
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_exec+0xbe) [0x5ef1afce] ../src/vm.c:2710
| /home/runner/work/ruby/ruby/build/ruby(vm_call0_body+0x4ce) [0x5ef200ce] ../src/vm_eval.c:225
| /home/runner/work/ruby/ruby/build/ruby(rb_call0+0x1dc) [0x5ef219fc] ../src/vm_eval.c:101
| /home/runner/work/ruby/ruby/build/ruby(iterate_method+0x6f) [0x5ef2214f] ../src/vm_eval.c:891
| /home/runner/work/ruby/ruby/build/ruby(rb_iterate0+0x12c) [0x5ef1464c] ../src/vm_eval.c:1488
| /home/runner/work/ruby/ruby/build/ruby(rb_block_call_kw+0xa4) [0x5ef148d4] ../src/vm_eval.c:1520
| /home/runner/work/ruby/ruby/build/ruby(enumerator_block_call+0x80) [0x5f01a970] ../src/enumerator.c:559
| /home/runner/work/ruby/ruby/build/ruby(vm_call0_cfunc_with_frame+0xd4) [0x5ef1fd24] ../src/vm_eval.c:164
| /home/runner/work/ruby/ruby/build/ruby(vm_call0_cfunc) ../src/vm_eval.c:178
| /home/runner/work/ruby/ruby/build/ruby(vm_call0_body) ../src/vm_eval.c:229
| /home/runner/work/ruby/ruby/build/ruby(rb_call0+0x1dc) [0x5ef219fc] ../src/vm_eval.c:101
| /home/runner/work/ruby/ruby/build/ruby(iterate_method+0x6f) [0x5ef2214f] ../src/vm_eval.c:891
| /home/runner/work/ruby/ruby/build/ruby(rb_iterate0+0x12c) [0x5ef1464c] ../src/vm_eval.c:1488
| /home/runner/work/ruby/ruby/build/ruby(rb_lambda_call+0xa9) [0x5ef14a69] ../src/vm_eval.c:1618
| /home/runner/work/ruby/ruby/build/ruby(enum_collect+0x5c) [0x5f00e41c] ../src/enum.c:667
| /home/runner/work/ruby/ruby/build/ruby(vm_cfp_consistent_p+0x0) [0x5ef0ccde] ../src/vm_insnhelper.c:3918
| /home/runner/work/ruby/ruby/build/ruby(vm_call_cfunc_with_frame_) ../src/vm_insnhelper.c:3920
| /home/runner/work/ruby/ruby/build/ruby(vm_call_method_each_type+0x8e) [0x5ef1c18e] ../src/vm_insnhelper.c:4904
| /home/runner/work/ruby/ruby/build/ruby(vm_sendish+0x102) [0x5ef12062] ../src/vm_insnhelper.c:6111
| /home/runner/work/ruby/ruby/build/ruby(vm_exec_core+0x290) [0x5ef27ed0] /home/runner/work/ruby/ruby/build/insns.def:853
| /home/runner/work/ruby/ruby/build/ruby(rb_vm_exec+0xbe) [0x5ef1afce] ../src/vm.c:2710
| /home/runner/work/ruby/ruby/build/ruby(rb_ec_exec_node+0xcb) [0x5ed5841b] ../src/eval.c:283
| /home/runner/work/ruby/ruby/build/ruby(ruby_run_node+0x89) [0x5ed5d039] ../src/eval.c:321
| /home/runner/work/ruby/ruby/build/ruby(rb_main+0x21) [0x5ed55976] ../src/main.c:42
| /home/runner/work/ruby/ruby/build/ruby(main) ../src/main.c:62
| /lib/i386-linux-gnu/libc.so.6(0xef2e0519) [0xef2e0519]
| /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0x93) [0xef2e05f3]
| [0x5ed559cb]
| 
| -- 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-/asan.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:
| 
| 5ed01000-5ed1e000 r--p 00000000 08:11 294888                             /home/runner/work/ruby/ruby/build/ruby
| 5ed1e000-5f0df000 r-xp 0001d000 08:11 294888                             /home/runner/work/ruby/ruby/build/ruby
| 5f0df000-5f340000 r--p 003de000 08:11 294888                             /home/runner/work/ruby/ruby/build/ruby
| 5f340000-5f346000 r--p 0063e000 08:11 294888                             /home/runner/work/ruby/ruby/build/ruby
| 5f346000-5f347000 rw-p 00644000 08:11 294888                             /home/runner/work/ruby/ruby/build/ruby
| 5f347000-5f34f000 rw-p 00000000 00:00 0 
| 5fb0f000-5fdf7000 rw-p 00000000 00:00 0                                  [heap]
| db480000-db6ad000 r--s 00000000 08:11 97148                              /usr/lib/i386-linux-gnu/libc.so.6
| db6ad000-dd2f9000 r--s 00000000 08:11 294888                             /home/runner/work/ruby/ruby/build/ruby
| dd2f9000-dd2fc000 r--p 00000000 08:11 97116                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| dd2fc000-dd319000 r-xp 00003000 08:11 97116                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| dd319000-dd31e000 r--p 00020000 08:11 97116                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| dd31e000-dd31f000 r--p 00024000 08:11 97116                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| dd31f000-dd320000 rw-p 00025000 08:11 97116                              /usr/lib/i386-linux-gnu/libgcc_s.so.1
| dd320000-dd420000 rw-p 00000000 00:00 0 
| dd42f000-dd4c0000 rw-p 00000000 00:00 0 
| dd4c2000-dd4c4000 r--p 00000000 08:11 294620                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| dd4c4000-dd4ca000 r-xp 00002000 08:11 294620                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| dd4ca000-dd4cd000 r--p 00008000 08:11 294620                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| dd4cd000-dd4ce000 r--p 0000a000 08:11 294620                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| dd4ce000-dd4cf000 rw-p 0000b000 08:11 294620                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/io/console.so
| dd4cf000-dd4d0000 ---p 00000000 00:00 0 
| dd4d0000-dd4f1000 rw-p 00000000 00:00 0 
| dd4f1000-dd4f2000 ---p 00000000 00:00 0 
| dd4f2000-dd513000 rw-p 00000000 00:00 0 
| dd513000-dd514000 ---p 00000000 00:00 0 
| dd514000-dd535000 rw-p 00000000 00:00 0 
| dd535000-dd536000 ---p 00000000 00:00 0 
| dd536000-dd557000 rw-p 00000000 00:00 0 
| dd557000-dd558000 ---p 00000000 00:00 0 
| dd558000-dd579000 rw-p 00000000 00:00 0 
| dd579000-dd57a000 ---p 00000000 00:00 0 
| dd57a000-dd59b000 rw-p 00000000 00:00 0 
| dd59b000-dd59c000 ---p 00000000 00:00 0 
| dd59c000-dd5bd000 rw-p 00000000 00:00 0 
| dd5bd000-dd5be000 ---p 00000000 00:00 0 
| dd5be000-dd5df000 rw-p 00000000 00:00 0 
| dd5df000-dd5e0000 ---p 00000000 00:00 0 
| dd5e0000-de5e0000 rw-p 00000000 00:00 0 
| de5e0000-ef230000 rw-p 00000000 00:00 0 
| ef230000-ef231000 r--p 00000000 08:11 294344                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/asan.so
| ef231000-ef232000 r-xp 00001000 08:11 294344                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/asan.so
| ef232000-ef233000 r--p 00002000 08:11 294344                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/asan.so
| ef233000-ef234000 r--p 00002000 08:11 294344                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/asan.so
| ef234000-ef235000 rw-p 00003000 08:11 294344                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/-test-/asan.so
| ef235000-ef236000 r--p 00000000 08:11 294689                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| ef236000-ef238000 r-xp 00001000 08:11 294689                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| ef238000-ef23a000 r--p 00003000 08:11 294689                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| ef23a000-ef23b000 r--p 00004000 08:11 294689                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| ef23b000-ef23c000 rw-p 00005000 08:11 294689                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/rbconfig/sizeof.so
| ef23c000-ef2bf000 rw-p 00000000 00:00 0 
| ef2bf000-ef2df000 r--p 00000000 08:11 97148                              /usr/lib/i386-linux-gnu/libc.so.6
| ef2df000-ef461000 r-xp 00020000 08:11 97148                              /usr/lib/i386-linux-gnu/libc.so.6
| ef461000-ef4e6000 r--p 001a2000 08:11 97148                              /usr/lib/i386-linux-gnu/libc.so.6
| ef4e6000-ef4e7000 ---p 00227000 08:11 97148                              /usr/lib/i386-linux-gnu/libc.so.6
| ef4e7000-ef4e9000 r--p 00227000 08:11 97148                              /usr/lib/i386-linux-gnu/libc.so.6
| ef4e9000-ef4ea000 rw-p 00229000 08:11 97148                              /usr/lib/i386-linux-gnu/libc.so.6
| ef4ea000-ef4f4000 rw-p 00000000 00:00 0 
| ef4f4000-ef4ff000 r--p 00000000 08:11 97151                              /usr/lib/i386-linux-gnu/libm.so.6
| ef4ff000-ef5c1000 r-xp 0000b000 08:11 97151                              /usr/lib/i386-linux-gnu/libm.so.6
| ef5c1000-ef5fa000 r--p 000cd000 08:11 97151                              /usr/lib/i386-linux-gnu/libm.so.6
| ef5fa000-ef5fb000 r--p 00105000 08:11 97151                              /usr/lib/i386-linux-gnu/libm.so.6
| ef5fb000-ef5fc000 rw-p 00106000 08:11 97151                              /usr/lib/i386-linux-gnu/libm.so.6
| ef5fc000-ef5fd000 r--p 00000000 08:11 97126                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| ef5fd000-ef617000 r-xp 00001000 08:11 97126                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| ef617000-ef633000 r--p 0001b000 08:11 97126                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| ef633000-ef634000 r--p 00036000 08:11 97126                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| ef634000-ef635000 rw-p 00037000 08:11 97126                              /usr/lib/i386-linux-gnu/libcrypt.so.1.1.0
| ef635000-ef63d000 rw-p 00000000 00:00 0 
| ef63d000-ef63f000 r--p 00000000 08:11 98995                              /usr/lib/i386-linux-gnu/libz.so.1.2.11
| ef63f000-ef651000 r-xp 00002000 08:11 98995                              /usr/lib/i386-linux-gnu/libz.so.1.2.11
| ef651000-ef659000 r--p 00014000 08:11 98995                              /usr/lib/i386-linux-gnu/libz.so.1.2.11
| ef659000-ef65a000 r--p 0001b000 08:11 98995                              /usr/lib/i386-linux-gnu/libz.so.1.2.11
| ef65a000-ef65b000 rw-p 0001c000 08:11 98995                              /usr/lib/i386-linux-gnu/libz.so.1.2.11
| ef65e000-ef65f000 r--p 00000000 08:11 294174                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| ef65f000-ef660000 r-xp 00001000 08:11 294174                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| ef660000-ef661000 r--p 00002000 08:11 294174                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| ef661000-ef662000 r--p 00002000 08:11 294174                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| ef662000-ef663000 rw-p 00003000 08:11 294174                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/trans/transdb.so
| ef663000-ef664000 r--p 00000000 08:11 294126                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| ef664000-ef665000 r-xp 00001000 08:11 294126                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| ef665000-ef666000 r--p 00002000 08:11 294126                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| ef666000-ef667000 r--p 00002000 08:11 294126                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| ef667000-ef668000 rw-p 00003000 08:11 294126                             /home/runner/work/ruby/ruby/build/.ext/i686-linux-gnu/enc/encdb.so
| ef668000-ef66a000 rw-p 00000000 00:00 0 
| ef66a000-ef66e000 r--p 00000000 00:00 0                                  [vvar]
| ef66e000-ef670000 r-xp 00000000 00:00 0                                  [vdso]
| ef670000-ef671000 r--p 00000000 08:11 97145                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| ef671000-ef696000 r-xp 00001000 08:11 97145                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| ef696000-ef6a5000 r--p 00026000 08:11 97145                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| ef6a5000-ef6a7000 r--p 00034000 08:11 97145                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| ef6a7000-ef6a8000 rw-p 00036000 08:11 97145                              /usr/lib/i386-linux-gnu/ld-linux.so.2
| ffa40000-ffa63000 rw-p 00000000 00:00 0                                  [stack]
| 
| 


[-> View Test suite health in main branch]

@YO4
Copy link
Copy Markdown
Contributor Author

YO4 commented Oct 1, 2025

Additional context refering this PR
Bug #21621

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