Hi Pierre,
On Mon, Oct 24, 2016 at 12:16:32PM +0000, Pierre Cheynier wrote:
> $ grep ^Sig /proc/43135/status
> SigQ: 0/192473
> SigPnd: 0000000000000000
> SigBlk: 0000000000000000
> SigIgn: 0000000000001000
> SigCgt: 0000000180004803
(...)
Same for all of them. Very interesting, SIGUSR2 (12) is set
in SigIgn :-) One question is "why", but at least we know we
have a workaround consisiting in unblocking these signals in
haproxy-systemd-wrapper, as we did in haproxy.
Care to retry with the attached patch ?
Willy
diff --git a/src/haproxy-systemd-wrapper.c b/src/haproxy-systemd-wrapper.c
index d118ec6..f42723b 100644
--- a/src/haproxy-systemd-wrapper.c
+++ b/src/haproxy-systemd-wrapper.c
@@ -169,6 +169,14 @@ int main(int argc, char **argv)
{
int status;
struct sigaction sa;
+ sigset_t blocked_sig;
+
+ /* Ensure signals are not blocked. Some shells or service managers may
+ * accidently block all of our signals unfortunately, causing lots of
+ * zombie processes to remain in the background during reloads.
+ */
+ sigemptyset(&blocked_sig);
+ sigprocmask(SIG_SETMASK, &blocked_sig, NULL);
wrapper_argc = argc;
wrapper_argv = argv;