diff --git a/src/debug.c b/src/debug.c index 6ce8b3bdc..26c1a91fc 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1808,7 +1808,7 @@ void bugReportEnd(int killViaSignal, int sig) { ); /* free(messages); Don't call free() with possibly corrupted memory. */ - if (server.daemonize && server.supervised == 0) unlink(server.pidfile); + if (server.daemonize && server.supervised == 0 && server.pidfile) unlink(server.pidfile); if (!killViaSignal) { if (server.use_exit_on_panic) diff --git a/src/server.c b/src/server.c index 29c810928..0be8fb003 100644 --- a/src/server.c +++ b/src/server.c @@ -5200,6 +5200,10 @@ void closeClildUnusedResourceAfterFork() { closeListeningSockets(0); if (server.cluster_enabled && server.cluster_config_file_lock_fd != -1) close(server.cluster_config_file_lock_fd); /* don't care if this fails */ + + /* Clear server.pidfile, this is the parent pidfile which should not + * be touched (or deleted) by the child (on exit / crash) */ + server.pidfile = NULL; } /* purpose is one of CHILD_TYPE_ types */