|
From 22e0a2295a96c30c9cd11e3aa5997e9de9083b93 Mon Sep 17 00:00:00 2001
|
|
From: William Lallemand <wlallemand@haproxy.com>
|
|
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
|
|
|