From 4c932f0c81f2311c169bbdcd6b6a9d50575d8381 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Tue, 17 Feb 2026 14:50:51 +0100 Subject: [PATCH] Fix #3651: Prevent crash during shutdown in Frankenphp Signed-off-by: Bob Weinand --- ext/signals.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ext/signals.c b/ext/signals.c index 096bf28b20..c6e0812ad2 100644 --- a/ext/signals.c +++ b/ext/signals.c @@ -375,6 +375,20 @@ static int dd_call_prev_handler(bool flush) { } static int dd_sigterm_cleanup_thread(void *arg) { + // Block all signals to prevent delivery to this thread + sigset_t set; + sigfillset(&set); + sigprocmask(SIG_BLOCK, &set, NULL); + + // Make the Go runtime believe, we are actually running on a signal stack + stack_t altstack; + altstack.ss_sp = dd_signal_async_stack; + if (altstack.ss_sp) { + altstack.ss_size = dd_signal_async_stack_size; + altstack.ss_flags = 0; + sigaltstack(&altstack, NULL); + } + return dd_call_prev_handler(true); }