From 0436ab78416e1066fb8f65d33496ac1ee4d685d1 Mon Sep 17 00:00:00 2001 From: Tim Duesterhus Date: Sun, 12 Nov 2017 17:39:18 +0100 Subject: [PATCH] BUG/MEDIUM: mworker: Fix re-exec when haproxy is started from PATH If haproxy is started using the name of the binary only (i.e. not using a relative or absolute path) the `execv` in `mworker_reload` fails with `ENOENT`, because it does not examine the `PATH`: [WARNING] 315/161139 (7) : Reexecuting Master process [WARNING] 315/161139 (7) : Cannot allocate memory [WARNING] 315/161139 (7) : Failed to reexecute the master processs [7] The error messages are misleading, because the return value of `execv` is not checked. This should be fixed in a separate commit. Once this happened the master process ignores any further signals sent by the administrator. Replace `execv` with `execvp` to establish the expected behaviour. This bug was introduced in commit 73b85e75b3963086be889e1fb40a59e7ef2ad63b. --- src/haproxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/haproxy.c b/src/haproxy.c index a22ed321f..b4f6a4f88 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -650,7 +650,7 @@ static void mworker_reload() deinit(); /* we don't want to leak FD there */ Warning("Reexecuting Master process\n"); - execv(next_argv[0], next_argv); + execvp(next_argv[0], next_argv); alloc_error: Warning("Cannot allocate memory\n");