]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
utils: Improve debug spew in ply_create_daemon
authorRay Strode <rstrode@redhat.com>
Fri, 17 Sep 2010 01:10:01 +0000 (21:10 -0400)
committerRay Strode <rstrode@redhat.com>
Fri, 17 Sep 2010 01:10:01 +0000 (21:10 -0400)
Right now if plymouthd dies while daemonizing, we show a horrible
error message on the console:

could not read byte from child: Success

This commit mops that up, so we give a little clue why plymouthd's
child process died in its infancy.

src/libply/ply-utils.c

index ac5a5c14d3882cca428234c93bb4993e0be6193c..a65c469a8bab4b80508dc972ae27966e9824e8fc 100644 (file)
@@ -41,6 +41,7 @@
 #include <sys/types.h>
 #include <sys/un.h>
 #include <sys/user.h>
+#include <sys/wait.h>
 #include <time.h>
 #include <linux/fs.h>
 #include <linux/vt.h>
@@ -846,7 +847,20 @@ ply_create_daemon (const char *pid_file)
 
       if (!ply_read (receiver_fd, &byte, sizeof (uint8_t)))
         {
-          ply_error ("could not read byte from child: %m");
+          int status;
+
+          if (waitpid (pid, &status, WNOHANG) <= 0)
+            {
+              ply_error ("failed to read status from child immediately after starting to daemonize");
+            }
+          else if (WIFEXITED (status))
+            {
+              ply_error ("unexpectedly exited with status %d immediately after starting to daemonize", (int) WEXITSTATUS (status));
+            }
+          else if (WIFSIGNALED (status))
+            {
+              ply_error ("unexpectedly died from signal %s immediately after starting to daemonize", strsignal (WTERMSIG (status)));
+            }
           _exit (1);
         }