From 3179789f463e834c75a1e72ae06a22a562becbff Mon Sep 17 00:00:00 2001 From: Benoit Chesneau Date: Fri, 23 Jan 2026 21:25:07 +0100 Subject: [PATCH] fix: handle SIGCLD alias for SIGCHLD on Linux On Linux, SIGCLD and SIGCHLD are aliases for the same signal number (17). The SIG_NAMES dict iteration order can map to either name, causing "Unhandled signal: cld" errors when workers fail during boot. Fixes #3453 --- gunicorn/arbiter.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gunicorn/arbiter.py b/gunicorn/arbiter.py index 222b3ca3..f8c64b4b 100644 --- a/gunicorn/arbiter.py +++ b/gunicorn/arbiter.py @@ -237,6 +237,10 @@ class Arbiter: """SIGCHLD handling - called from main loop, safe to log.""" self.reap_workers() + # SIGCLD is an alias for SIGCHLD on Linux. The SIG_NAMES dict may map + # to either "chld" or "cld" depending on iteration order of dir(signal). + handle_cld = handle_chld + def handle_hup(self): """\ HUP handling.