By requesting the pid in virCommandRunAsync, fdstream was claiming that it would manually wait for the process. But on the failure path, the child process was being leaked. * src/fdstream.c (virFDStreamOpenFileInternal): Auto-reap child. --- src/fdstream.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-) diff --git a/src/fdstream.c b/src/fdstream.c index 54f8198..d111813 100644 --- a/src/fdstream.c +++ b/src/fdstream.c @@ -31,7 +31,6 @@ # include <sys/un.h> #endif #include <netinet/in.h> -#include <signal.h> #include "fdstream.h" #include "virterror_internal.h" @@ -514,7 +513,6 @@ virFDStreamOpenFileInternal(virStreamPtr st, struct stat sb; virCommandPtr cmd = NULL; int errfd = -1; - pid_t pid = 0; VIR_DEBUG("st=%p path=%s flags=%d offset=%llu length=%llu mode=%d delete=%d", st, path, flags, offset, length, mode, delete); @@ -588,7 +586,7 @@ virFDStreamOpenFileInternal(virStreamPtr st, } virCommandSetErrorFD(cmd, &errfd); - if (virCommandRunAsync(cmd, &pid) < 0) + if (virCommandRunAsync(cmd, NULL) < 0) goto error; VIR_FORCE_CLOSE(childfd); @@ -611,10 +609,6 @@ virFDStreamOpenFileInternal(virStreamPtr st, return 0; error: -#ifndef WIN32 - if (pid) - kill(SIGTERM, pid); -#endif virCommandFree(cmd); VIR_FORCE_CLOSE(fds[0]); VIR_FORCE_CLOSE(fds[1]); -- 1.7.4.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list