From 22e0a2295a96c30c9cd11e3aa5997e9de9083b93 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Fri, 23 Dec 2016 15:44:15 +0100 Subject: [PATCH 17/19] BUG/MINOR: systemd: potential zombie processes In systemd mode (-Ds), the master haproxy process is waiting for each child to exit in a specific order. If a process die when it's not his turn, it will become a zombie process until every processes exit. The master is now waiting for any process to exit in any order. This patch should be backported to 1.7, 1.6 and 1.5. (cherry picked from commit 1e4fc43630eb194f8e8dd98197cf47c7e9912371) --- src/haproxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/haproxy.c b/src/haproxy.c index c31ccb0..b30a351 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2038,7 +2038,7 @@ int main(int argc, char **argv) /* it's OK because "-Ds -f x" is the shortest form going here */ memcpy(argv[0] + strlen(argv[0]), "-master", 8); for (proc = 0; proc < global.nbproc; proc++) - while (waitpid(children[proc], NULL, 0) == -1 && errno == EINTR); + while (waitpid(-1, NULL, 0) == -1 && errno == EINTR); } exit(0); /* parent must leave */ } -- 2.10.2