From bbae34b951c27495bd0d91bafa353b55001d8116 Mon Sep 17 00:00:00 2001 From: Benoit Chesneau Date: Sun, 25 Jan 2026 15:18:04 +0100 Subject: [PATCH] Fix setproctitle initialization with systemd socket activation (#3465) Force early setproctitle initialization by calling getproctitle() immediately after import. This ensures setproctitle captures the argv/environ memory layout before systemd.listen_fds() modifies the environment by removing LISTEN_FDS and LISTEN_PID. Without this fix, if LISTEN_FDS is the first environment variable, setproctitle fails to detect argv correctly and silently fails. Fixes #3430 --- gunicorn/util.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gunicorn/util.py b/gunicorn/util.py index 16842afd..11e285d5 100644 --- a/gunicorn/util.py +++ b/gunicorn/util.py @@ -53,7 +53,12 @@ if sys.platform == "darwin": pass else: try: - from setproctitle import setproctitle + from setproctitle import setproctitle, getproctitle + + # Force early initialization before any os.environ modifications + # (e.g. removing LISTEN_FDS in systemd socket activation) + # https://github.com/benoitc/gunicorn/issues/3430 + getproctitle() def _setproctitle(title): setproctitle("gunicorn: %s" % title)