mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-02-04 23:42:07 +01:00
41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
Unlike `waitpid`, `virProcessWait` only returns -1 (error) or 0
|
|
(success), so comparing that to `pid` will always be false and the
|
|
parent will report failure with:
|
|
|
|
error : main:851 : Failed to fork as daemon: No such file or directory
|
|
|
|
even though the grandchild process is succesfully running. Note that the
|
|
errno message is misleading: it was last set when trying to find a
|
|
restart state file.
|
|
|
|
Signed-off-by: Rafael Fonseca <r4f4rfs@gmail.com>
|
|
Reported-by: Marcin Krol <hawk@tld-linux.org>
|
|
---
|
|
src/util/virdaemon.c | 5 ++---
|
|
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/util/virdaemon.c b/src/util/virdaemon.c
|
|
index 5d92c7def7..99530fd146 100644
|
|
--- a/src/util/virdaemon.c
|
|
+++ b/src/util/virdaemon.c
|
|
@@ -97,15 +97,14 @@ virDaemonForkIntoBackground(const char *argv0)
|
|
default:
|
|
{
|
|
/* parent */
|
|
- int got, exitstatus = 0;
|
|
+ int exitstatus = 0;
|
|
int ret;
|
|
char status;
|
|
|
|
VIR_FORCE_CLOSE(statuspipe[1]);
|
|
|
|
/* We wait to make sure the first child forked successfully */
|
|
- if ((got = virProcessWait(pid, &exitstatus, 0)) < 0 ||
|
|
- got != pid ||
|
|
+ if (virProcessWait(pid, &exitstatus, 0) < 0 ||
|
|
exitstatus != 0) {
|
|
goto error;
|
|
}
|
|
--
|
|
2.25.2
|