From 1a22e9f3c62fb248725874b64b8953392c004bca Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Wed, 31 Jan 2024 16:16:49 -0500 Subject: catch signals raised during quick_exit() --- src/signal/__signal_handler.c | 5 +++++ src/signal/raise.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/signal/__signal_handler.c b/src/signal/__signal_handler.c index 9cd9eda7..0c0fd719 100644 --- a/src/signal/__signal_handler.c +++ b/src/signal/__signal_handler.c @@ -1,9 +1,14 @@ #include #include "_signal.h" +#include "stdlib/_stdlib.h" #include "_safety.h" void __signal_handler(int sig) { + if (__stdlib.exit_called == QUICK) { + __undefined("signal %d occured during quick_exit", sig); + } + ___signal.current = sig; if (___signal.handlers[sig] != NULL) { ___signal.handlers[sig](sig); diff --git a/src/signal/raise.c b/src/signal/raise.c index 1a8732ef..bb2391df 100644 --- a/src/signal/raise.c +++ b/src/signal/raise.c @@ -4,6 +4,7 @@ #endif #include +#include "stdlib/_stdlib.h" #ifdef POSIX_FORCED #include "_syscall.h" @@ -18,6 +19,9 @@ int raise(int sig) { SIGNAL_SAFE(0); + if (__stdlib.exit_called == QUICK) { + __undefined("raise() called during quick_exit()"); + } /* RETURN_FAILURE(NONZERO); RETURN_SUCCESS(0); -- cgit v1.2.1