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.
---
 src/haproxy.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/haproxy.c b/src/haproxy.c
index bb9f0cf..4ad370d 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 */
                }
-- 
2.10.2


Reply via email to