Project

General

Profile

Actions

Bug #21537

open

rb_ractor_sched_barrier_start() hangs on Windows

Added by rhenium (Kazuki Yamaguchi) 4 days ago. Updated 2 days ago.

Status:
Open
Assignee:
Target version:
-
ruby -v:
ruby 3.5.0dev (2025-08-09T11:32:53Z master 2a6345e957) +PRISM [x64-mswin64_140]
[ruby-core:122943]

Description

The following script hangs at GC.start indefinitely. Pressing Ctrl+C on the terminal interrupts the sleep and it appears to resume and prints "in_ractor".

Ractor.new {
  sleep 1
  GC.start
  puts "in_ractor"
}
sleep

I also reproduced this with Ruby 3.0.7 from RubyInstaller2.

Here is the stack trace with master:

0:006> ~*k

   0  Id: 1e88.36c4 Suspend: 1 Teb: 000000c6`92478000 Unfrozen
 # Child-SP          RetAddr               Call Site
00 000000c6`929fef18 00007ffa`9e4edf43     ntdll!NtWaitForMultipleObjects+0x14
01 000000c6`929fef20 00007ffa`9e4ede11     KERNELBASE!WaitForMultipleObjectsEx+0x123
02 000000c6`929ff210 00007ff6`756b8164     KERNELBASE!WaitForMultipleObjects+0x11
03 000000c6`929ff250 00007ff6`756b13af     miniruby!w32_wait_events+0x108 [C:\w\ruby\thread_win32.c @ 239] 
04 000000c6`929ff2d0 00007ff6`756b62a2     miniruby!native_sleep+0xc3 [C:\w\ruby\thread_win32.c @ 360] 
05 000000c6`929ff310 00007ff6`75646353     miniruby!sleep_forever+0x82 [C:\w\ruby\thread.c @ 1374] 
06 000000c6`929ff350 00007ff6`756e5f4b     miniruby!rb_f_sleep+0x53 [C:\w\ruby\process.c @ 4975] 
07 000000c6`929ff380 00007ff6`756e5df9     miniruby!vm_call_cfunc_with_frame_+0x14b [C:\w\ruby\vm_insnhelper.c @ 3850] 
08 000000c6`929ff460 00007ff6`756e5dbb     miniruby!vm_call_cfunc_with_frame+0x29 [C:\w\ruby\vm_insnhelper.c @ 3895] 
09 000000c6`929ff4a0 00007ff6`756e5ab7     miniruby!vm_call_cfunc_other+0xc7 [C:\w\ruby\vm_insnhelper.c @ 3922] 
0a 000000c6`929ff4e0 00007ff6`756e8363     miniruby!vm_call_cfunc+0x10b [C:\w\ruby\vm_insnhelper.c @ 4003] 
0b 000000c6`929ff510 00007ff6`756e7cfe     miniruby!vm_call_method_each_type+0x637 [C:\w\ruby\vm_insnhelper.c @ 4827] 
0c 000000c6`929ff610 00007ff6`756f39b4     miniruby!vm_call_method+0x152 [C:\w\ruby\vm_insnhelper.c @ 4991] 
0d 000000c6`929ff680 00007ff6`756ee003     miniruby!vm_sendish+0x1f4 [C:\w\ruby\vm_insnhelper.c @ 6065] 
0e 000000c6`929ff700 00007ff6`756e0f27     miniruby!vm_exec_core+0x25cb [C:\w\ruby\insns.def @ 900] 
0f (Inline Function) --------`--------     miniruby!vm_exec_loop+0x8 [C:\w\ruby\vm.c @ 2653] 
10 000000c6`929ff860 00007ff6`755b896f     miniruby!rb_vm_exec+0x10b [C:\w\ruby\vm.c @ 2624] 
11 000000c6`929ff9d0 00007ff6`755baf47     miniruby!rb_ec_exec_node+0x10f [C:\w\ruby\eval.c @ 284] 
12 000000c6`929ffb50 00007ff6`75531069     miniruby!ruby_run_node+0x43 [C:\w\ruby\eval.c @ 320] 
13 (Inline Function) --------`--------     miniruby!rb_main+0x25 [C:\w\ruby\main.c @ 42] 
14 (Inline Function) --------`--------     miniruby!w32_main+0x5f [C:\w\ruby\main.c @ 62] 
15 000000c6`929ffb80 00007ff6`7575e3ec     miniruby!wmain+0x69 [C:\w\ruby\main.c @ 48] 
16 (Inline Function) --------`--------     miniruby!invoke_main+0x22 [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 90] 
17 000000c6`929ffbb0 00007ffa`a03de8d7     miniruby!__scrt_common_main_seh+0x10c [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 288] 
18 000000c6`929ffbf0 00007ffa`a0fdc34c     KERNEL32!BaseThreadInitThunk+0x17
19 000000c6`929ffc20 00000000`00000000     ntdll!RtlUserThreadStart+0x2c

   1  Id: 1e88.1468 Suspend: 1 Teb: 000000c6`9247a000 Unfrozen
 # Child-SP          RetAddr               Call Site
00 000000c6`92dff618 00007ffa`a103259e     ntdll!NtWaitForWorkViaWorkerFactory+0x14
01 000000c6`92dff620 00007ffa`a03de8d7     ntdll!TppWorkerThread+0x37e
02 000000c6`92dff980 00007ffa`a0fdc34c     KERNEL32!BaseThreadInitThunk+0x17
03 000000c6`92dff9b0 00000000`00000000     ntdll!RtlUserThreadStart+0x2c

   2  Id: 1e88.1058 Suspend: 1 Teb: 000000c6`9247c000 Unfrozen
 # Child-SP          RetAddr               Call Site
00 000000c6`931ff6a8 00007ffa`a103259e     ntdll!NtWaitForWorkViaWorkerFactory+0x14
01 000000c6`931ff6b0 00007ffa`a03de8d7     ntdll!TppWorkerThread+0x37e
02 000000c6`931ffa10 00007ffa`a0fdc34c     KERNEL32!BaseThreadInitThunk+0x17
03 000000c6`931ffa40 00000000`00000000     ntdll!RtlUserThreadStart+0x2c

   3  Id: 1e88.158c Suspend: 1 Teb: 000000c6`9247e000 Unfrozen
 # Child-SP          RetAddr               Call Site
00 000000c6`935ff998 00007ffa`a103259e     ntdll!NtWaitForWorkViaWorkerFactory+0x14
01 000000c6`935ff9a0 00007ffa`a03de8d7     ntdll!TppWorkerThread+0x37e
02 000000c6`935ffd00 00007ffa`a0fdc34c     KERNEL32!BaseThreadInitThunk+0x17
03 000000c6`935ffd30 00000000`00000000     ntdll!RtlUserThreadStart+0x2c

   4  Id: 1e88.3acc Suspend: 1 Teb: 000000c6`92480000 Unfrozen "ruby-timer-thread"
 # Child-SP          RetAddr               Call Site
00 000000c6`936ffbc8 00007ffa`9e4ecbbf     ntdll!NtWaitForSingleObject+0x14
01 000000c6`936ffbd0 00007ff6`756b7e9d     KERNELBASE!WaitForSingleObjectEx+0xaf
02 000000c6`936ffc70 00007ffa`9e0d37b0     miniruby!timer_thread_func+0x45 [C:\w\ruby\thread_win32.c @ 777] 
03 000000c6`936ffca0 00007ffa`a03de8d7     ucrtbase!thread_start<unsigned int (__cdecl*)(void *),1>+0x30
04 000000c6`936ffcd0 00007ffa`a0fdc34c     KERNEL32!BaseThreadInitThunk+0x17
05 000000c6`936ffd00 00000000`00000000     ntdll!RtlUserThreadStart+0x2c

   5  Id: 1e88.2934 Suspend: 1 Teb: 000000c6`92482000 Unfrozen
 # Child-SP          RetAddr               Call Site
00 000000c6`937ff4f8 00007ffa`9e4ecbbf     ntdll!NtWaitForSingleObject+0x14
01 000000c6`937ff500 00007ff6`756b1276     KERNELBASE!WaitForSingleObjectEx+0xaf
02 000000c6`937ff5a0 00007ff6`756f7f47     miniruby!native_cond_timedwait_ms+0x62 [C:\w\ruby\thread_win32.c @ 483] 
03 (Inline Function) --------`--------     miniruby!vm_cond_wait+0x28 [C:\w\ruby\vm_sync.c @ 211] 
04 000000c6`937ff5f0 00007ff6`756b2c83     miniruby!rb_vm_cond_wait+0x37 [C:\w\ruby\vm_sync.c @ 220] 
05 000000c6`937ff620 00007ff6`756f7f02     miniruby!rb_ractor_sched_barrier_start+0x67 [C:\w\ruby\thread_win32.c @ 956] 
06 000000c6`937ff650 00007ff6`755c7a78     miniruby!rb_vm_barrier+0x1e [C:\w\ruby\vm_sync.c @ 265] 
07 (Inline Function) --------`--------     miniruby!rb_gc_vm_barrier+0x5 [C:\w\ruby\gc.c @ 179] 
08 (Inline Function) --------`--------     miniruby!gc_enter+0x25 [C:\w\ruby\gc\default\default.c @ 6609] 
09 000000c6`937ff680 00007ff6`755c442e     miniruby!gc_start+0xc0 [C:\w\ruby\gc\default\default.c @ 6334] 
0a 000000c6`937ff6e0 00007ff6`755cdd0f     miniruby!garbage_collect+0x42 [C:\w\ruby\gc\default\default.c @ 6316] 
0b 000000c6`937ff710 00007ff6`755c2cc3     miniruby!rb_gc_impl_start+0x4b [C:\w\ruby\gc\default\default.c @ 6767] 
0c 000000c6`937ff740 00007ff6`756d5c7b     miniruby!gc_start_internal+0x4f [C:\w\ruby\gc.c @ 3447] 
0d 000000c6`937ff780 00007ff6`756ee237     miniruby!builtin_invoker4+0x23 [C:\w\ruby\vm_insnhelper.c @ 7373] 
0e (Inline Function) --------`--------     miniruby!invoke_bf+0x32 [C:\w\ruby\vm_insnhelper.c @ 7485] 
0f (Inline Function) --------`--------     miniruby!vm_invoke_builtin+0x32 [C:\w\ruby\vm_insnhelper.c @ 7493] 
10 000000c6`937ff7c0 00007ff6`756e0f27     miniruby!vm_exec_core+0x27ff [C:\w\ruby\build-debug\vm.inc @ 4621] 
11 (Inline Function) --------`--------     miniruby!vm_exec_loop+0x8 [C:\w\ruby\vm.c @ 2653] 
12 000000c6`937ff920 00007ff6`756f08b0     miniruby!rb_vm_exec+0x10b [C:\w\ruby\vm.c @ 2624] 
13 (Inline Function) --------`--------     miniruby!invoke_iseq_block_from_c+0x1e3 [C:\w\ruby\vm.c @ 1651] 
14 (Inline Function) --------`--------     miniruby!invoke_block_from_c_proc+0x2f2 [C:\w\ruby\vm.c @ 1745] 
15 000000c6`937ffa90 00007ff6`756b6bf9     miniruby!vm_invoke_proc+0x324 [C:\w\ruby\vm.c @ 1775] 
16 000000c6`937ffbd0 00007ff6`756b7987     miniruby!thread_do_start_proc+0x131 [C:\w\ruby\thread.c @ 584] 
17 (Inline Function) --------`--------     miniruby!thread_do_start+0x37 [C:\w\ruby\thread.c @ 626] 
18 000000c6`937ffc40 00007ff6`756b7720     miniruby!thread_start_func_2+0x243 [C:\w\ruby\thread.c @ 677] 
19 000000c6`937ffe90 00007ffa`9e0d37b0     miniruby!thread_start_func_1+0x74 [C:\w\ruby\thread_win32.c @ 659] 
1a 000000c6`937ffec0 00007ffa`a03de8d7     ucrtbase!thread_start<unsigned int (__cdecl*)(void *),1>+0x30
1b 000000c6`937ffef0 00007ffa`a0fdc34c     KERNEL32!BaseThreadInitThunk+0x17
1c 000000c6`937fff20 00000000`00000000     ntdll!RtlUserThreadStart+0x2c

#  6  Id: 1e88.4f4 Suspend: 1 Teb: 000000c6`92486000 Unfrozen
 # Child-SP          RetAddr               Call Site
00 000000c6`93bff768 00007ffa`a10d793e     ntdll!DbgBreakPoint
01 000000c6`93bff770 00007ffa`a03de8d7     ntdll!DbgUiRemoteBreakin+0x4e
02 000000c6`93bff7a0 00007ffa`a0fdc34c     KERNEL32!BaseThreadInitThunk+0x17
03 000000c6`93bff7d0 00000000`00000000     ntdll!RtlUserThreadStart+0x2c
Actions

Also available in: Atom PDF

Like0
Like0