This is an automated email from the git hooks/post-receive script.

landry pushed a commit to branch master
in repository apps/xfce4-taskmanager.

commit 69f56371baf09ec2c38b82e3888df3e70e21871b
Author: Landry Breuil <[email protected]>
Date:   Wed Dec 3 18:30:34 2014 +0100

    Silently and gracefully handle the case when a process disappears before we 
try to get its argv
---
 src/task-manager-bsd.c |   13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/task-manager-bsd.c b/src/task-manager-bsd.c
index 3c952fa..f37e4c2 100644
--- a/src/task-manager-bsd.c
+++ b/src/task-manager-bsd.c
@@ -37,6 +37,9 @@
 #include <sys/vmmeter.h>
 #include "task-manager.h"
 
+#include <errno.h>
+extern int errno;
+
 char   *state_abbrev[] = {
        "", "start", "run", "sleep", "stop", "zomb", "dead", "onproc"
 };
@@ -112,16 +115,22 @@ gboolean get_task_list (GArray *task_list)
                if (!P_ZOMBIE(&p)) {
                        size = 128;
                        if ((args = malloc(size)) == NULL)
-                               errx(1,"failed to allocate memory for argv 
structures");
+                               errx(1,"failed to allocate memory for argv 
structures at %zu", size);
                        for (;; size *= 2) {
                                if ((args = realloc(args, size)) == NULL)
-                                       errx(1,"failed to allocate memory for 
argv structures of pid %d",t.pid);
+                                       errx(1,"failed to allocate memory 
(size=%zu) for argv structures of pid %d", size, t.pid);
                                mib[0] = CTL_KERN;
                                mib[1] = KERN_PROC_ARGS;
                                mib[2] = t.pid;
                                mib[3] = KERN_PROC_ARGV;
                                if (sysctl(mib, 4, args, &size, NULL, 0) == 0)
                                        break;
+                               if (errno != ENOMEM) { /* ESRCH: process 
disappeared */
+                                        /* printf ("process with pid %d 
disappeared, errno=%d\n", t.pid, errno); */
+                                       args[0] ='\0';
+                                       args[1] = NULL;
+                                       break;
+                               }
                        }
                        buf[0] = '\0';
                        for (ptr = args; *ptr != NULL; ptr++) {

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to