From 08e20e912dfe0a5671de2d3496deefda9018e69a Mon Sep 17 00:00:00 2001 From: Calvin Rose Date: Sat, 19 Aug 2023 17:30:55 -0500 Subject: [PATCH] Use pthread_sigmask when adding signal handlers. --- src/core/os.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/os.c b/src/core/os.c index d422c2ed..67c2a12e 100644 --- a/src/core/os.c +++ b/src/core/os.c @@ -815,7 +815,11 @@ static void janet_signal_callback(JanetEVGenericMessage msg) { sigset_t set; sigemptyset(&set); sigaddset(&set, sig); +#ifdef JANET_THREADS + pthread_sigmask(SIG_BLOCK, &set, NULL); +#else sigprocmask(SIG_BLOCK, &set, NULL); +#endif raise(sig); return; } @@ -881,6 +885,14 @@ JANET_CORE_FN(os_sigaction, } action.sa_mask = mask; RETRY_EINTR(rc, sigaction(sig, &action, NULL)); + sigset_t set; + sigemptyset(&set); + sigaddset(&set, sig); +#ifdef JANET_THREADS + pthread_sigmask(SIG_UNBLOCK, &set, NULL); +#else + sigprocmask(SIG_UNBLOCK, &set, NULL); +#endif return janet_wrap_nil(); #endif }