From: William Lallemand Date: Fri, 23 Dec 2016 14:44:15 +0000 (+0100) Subject: BUG/MINOR: systemd: potential zombie processes X-Git-Tag: v1.8-dev1~193 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1e4fc43630eb194f8e8dd98197cf47c7e9912371;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/haproxy.c b/src/haproxy.c index bb9f0cf9f0..4ad370d655 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1898,7 +1898,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 */ }