]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
conf: log termination status
authorChristian Brauner <christian.brauner@ubuntu.com>
Tue, 18 Jan 2022 15:26:58 +0000 (16:26 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 20 Jan 2022 11:12:58 +0000 (12:12 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/conf.c

index 62ea6ae54a95a5706bb338c753b255b867b693cc..74bf5178d233f8dea511f5becdd0fc4db8611502 100644 (file)
@@ -5566,9 +5566,19 @@ on_error:
 
        /* Wait for child to finish. */
        if (pid < 0)
-               return -1;
+               return log_error(-1, "Failed to create child process");
 
-       return wait_for_pid(pid);
+       ret = lxc_wait_for_pid_status(pid);
+       if (ret < 0)
+               return syserror("Failed to wait on child process %d", pid);
+       if (WIFSIGNALED(ret))
+               return log_error(-1, "Child process %d terminated by signal %ld", pid, WTERMSIG(ret));
+       if (!WIFEXITED(ret))
+               return log_error(-1, "Child did not termiate correctly");
+       if (WEXITSTATUS(ret))
+               return log_error(-1, "Child terminated with error %ld", WEXITSTATUS(ret));
+
+       return 0;
 }
 
 /* not thread-safe, do not use from api without first forking */