From 74f0ec3894d9f137415a7b209fc1a3f0f59e69d7 Mon Sep 17 00:00:00 2001 From: William Lallemand Date: Tue, 16 Apr 2019 17:42:44 +0200 Subject: [PATCH] BUG/MINOR: mworker: ensure that we still quits with SIGINT Since the fix "BUG/MINOR: mworker: don't exit with an ambiguous value" we are leaving with a EXIT_SUCCESS upon a SIGINT. We still need to quit with a SIGINT when a worker leaves with a SIGINT. This is done this way because vtest expect a 130 during the process stop, haproxy without mworker returns a 130, so it should be the same in mworker mode. This should be backported in 1.9, with the previous patch ("BUG/MINOR: mworker: don't exit with an ambiguous value"). Code has moved, mworker_catch_sigchld() is in haproxy.c. --- src/mworker.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mworker.c b/src/mworker.c index 73e392801..6b591d4eb 100644 --- a/src/mworker.c +++ b/src/mworker.c @@ -275,10 +275,11 @@ void mworker_catch_sigchld(struct sig_handler *sh) if (status != 0 && status != 130 && status != 143 && !(global.tune.options & GTUNE_NOEXIT_ONFAILURE)) { ha_alert("exit-on-failure: killing every processes with SIGTERM\n"); - if (exitcode < 0) - exitcode = status; mworker_kill(SIGTERM); } + /* 0 & SIGTERM (143) are normal, but we should report SIGINT (130) and other signals */ + if (exitcode < 0 && status != 0 && status != 143) + exitcode = status; } else { if (child->options & PROC_O_TYPE_WORKER) { ha_warning("Former worker #%d (%d) exited with code %d (%s)\n", child->relative_pid, exitpid, status, (status >= 128) ? strsignal(status - 128) : "Exit");