From a1a77e5acc9e55ec27aa6caa63ed5e7642d2e4b7 Mon Sep 17 00:00:00 2001 From: HASUMI Hitoshi Date: Mon, 18 May 2026 15:30:44 +0900 Subject: [PATCH] Call task_check_scheduler_lock in queue_pop_try to avoid dead lock --- mrbgems/mruby-task/src/task_queue.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mrbgems/mruby-task/src/task_queue.c b/mrbgems/mruby-task/src/task_queue.c index 210b1240b..bf1884c38 100644 --- a/mrbgems/mruby-task/src/task_queue.c +++ b/mrbgems/mruby-task/src/task_queue.c @@ -140,6 +140,9 @@ queue_pop_try(mrb_state *mrb, mrb_value self) mrb_raise(mrb, E_RUNTIME_ERROR, "blocking pop can only be called from within a task"); } + /* Blocking pop requires the scheduler to be running */ + task_check_scheduler_lock(mrb); + /* Guard against yielding from inside a C function boundary */ mrb_callinfo *ci; for (ci = mrb->c->ci; ci >= mrb->c->cibase; ci--) {