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.
This commit is contained in:
William Lallemand 2016-12-23 15:44:15 +01:00 committed by Willy Tarreau
parent 119a4084bf
commit 1e4fc43630

View file

@ -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 */
}