udevd: warn if we receive SIGCHLD from untracked worker
authorTom Gundersen <teg@jklm.no>
Fri, 24 Apr 2015 16:04:57 +0000 (18:04 +0200)
committerTom Gundersen <teg@jklm.no>
Fri, 24 Apr 2015 17:13:48 +0000 (19:13 +0200)
src/udev/udevd.c

index 60e1ee6..6b5d99b 100644 (file)
@@ -859,6 +859,7 @@ static void handle_signal(struct udev *udev, int signo) {
                         pid_t pid;
                         int status;
                         struct udev_list_node *loop, *tmp;
+                        bool found = false;
 
                         pid = waitpid(-1, &status, WNOHANG);
                         if (pid <= 0)
@@ -869,6 +870,8 @@ static void handle_signal(struct udev *udev, int signo) {
 
                                 if (worker->pid != pid)
                                         continue;
+                                else
+                                        found = true;
 
                                 if (WIFEXITED(status)) {
                                         if (WEXITSTATUS(status) == 0)
@@ -905,6 +908,9 @@ static void handle_signal(struct udev *udev, int signo) {
                                 worker_unref(worker);
                                 break;
                         }
+
+                        if (!found)
+                                log_warning("worker ["PID_FMT"] is unknown, ignoring", pid);
                 }
                 break;
         case SIGHUP: