From ad54fbf281ca1935e79f4df1460b0106ba76761e Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Wed, 29 Nov 2023 15:54:32 -0800 Subject: Add missing GVL hooks for M:N threads and ractors [Bug #20019] This fixes GVL instrumentation in three locations it was missing: - Suspending when blocking on a Ractor - Suspending when doing a coroutine transfer from an M:N thread - Resuming after an M:N thread starts Co-authored-by: Matthew Draper --- thread_pthread.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'thread_pthread.c') diff --git a/thread_pthread.c b/thread_pthread.c index a8cf8c6126..64b636ec08 100644 --- a/thread_pthread.c +++ b/thread_pthread.c @@ -1304,6 +1304,8 @@ rb_ractor_sched_sleep(rb_execution_context_t *ec, rb_ractor_t *cr, rb_unblock_fu RB_VM_SAVE_MACHINE_CONTEXT(th); th->status = THREAD_STOPPED_FOREVER; + RB_INTERNAL_THREAD_HOOK(RUBY_INTERNAL_THREAD_EVENT_SUSPENDED, th); + bool can_direct_transfer = !th_has_dedicated_nt(th); thread_sched_wakeup_next_thread(sched, th, can_direct_transfer); thread_sched_wait_running_turn(sched, th, can_direct_transfer); -- cgit v1.2.3