Fix: use non block waitpid to lookup child state
[lttng-tools.git] / src / bin / lttng-sessiond / main.c
index 8aea0e77c840e38f3a05b117064fbc21f1f900e9..67ecc5228a194c7b6edda49431f0f20dcfa3ea16 100644 (file)
@@ -4580,6 +4580,18 @@ static int daemonize(void)
                 * user.
                 */
                while (!CMM_LOAD_SHARED(recv_child_signal)) {
+                       int status;
+                       pid_t ret;
+
+                       /*
+                        * Check if child exists without blocking. If so, we have to stop
+                        * this parent process and return an error.
+                        */
+                       ret = waitpid(pid, &status, WNOHANG);
+                       if (ret < 0 || (ret != 0 && WIFEXITED(status))) {
+                               /* The child exited somehow or was not valid. */
+                               goto error;
+                       }
                        sleep(1);
                }
 
This page took 0.022969 seconds and 4 git commands to generate.