summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-12-11 21:12:08 -0800
committerGitHub <noreply@github.com>2023-12-11 21:12:08 -0800
commit9f0065a077f00a077f507461846234c52509ce90 (patch)
tree0e541958b4b9b4f944efefeb83330b12e6ed4b39
parent1e5c8afb151c0121e83657fb6061d0e3805d30f6 (diff)
Initialize interrupt queue before signal handlers (#9196)
-rw-r--r--inits.c2
-rw-r--r--signal.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/inits.c b/inits.c
index a114b780aa..9ed104f369 100644
--- a/inits.c
+++ b/inits.c
@@ -51,7 +51,6 @@ rb_call_inits(void)
CALL(Dir);
CALL(Time);
CALL(Random);
- CALL(signal);
CALL(load);
CALL(Proc);
CALL(Binding);
@@ -63,6 +62,7 @@ rb_call_inits(void)
CALL(VM);
CALL(ISeq);
CALL(Thread);
+ CALL(signal);
CALL(Fiber_Scheduler);
CALL(process);
CALL(Cont);
diff --git a/signal.c b/signal.c
index fa7d25caf5..a4822cf6bc 100644
--- a/signal.c
+++ b/signal.c
@@ -1488,6 +1488,9 @@ Init_signal(void)
rb_alias(rb_eSignal, rb_intern_const("signm"), rb_intern_const("message"));
rb_define_method(rb_eInterrupt, "initialize", interrupt_init, -1);
+ // It should be ready to call rb_signal_exec()
+ VM_ASSERT(GET_THREAD()->pending_interrupt_queue);
+
/* At this time, there is no subthread. Then sigmask guarantee atomics. */
rb_disable_interrupt();