2011-08-26 Pedro Alves <pedro@codesourcery.com>
authorPedro Alves <palves@redhat.com>
Fri, 26 Aug 2011 18:58:04 +0000 (18:58 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 26 Aug 2011 18:58:04 +0000 (18:58 +0000)
gdb/
* common/linux-osdata.c (get_cores_used_by_process): Don't assume
opening /proc/PID/task always succeeds.

gdb/ChangeLog
gdb/common/linux-osdata.c

index 5179af7..140b3c6 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-26  Pedro Alves  <pedro@codesourcery.com>
+
+       * common/linux-osdata.c (get_cores_used_by_process): Don't assume
+       opening /proc/PID/task always succeeds.
+
 2011-08-26  Aleksandar Ristovski <aristovski@qnx.com>
 
        * linespec.c (symtab_from_filename): Check for the end of string.
index 78659d4..a356bb8 100644 (file)
@@ -259,27 +259,29 @@ get_cores_used_by_process (pid_t pid, int *cores)
 
   sprintf (taskdir, "/proc/%d/task", pid);
   dir = opendir (taskdir);
-
-  while ((dp = readdir (dir)) != NULL)
+  if (dir)
     {
-      pid_t tid;
-      int core;
+      while ((dp = readdir (dir)) != NULL)
+       {
+         pid_t tid;
+         int core;
 
-      if (!isdigit (dp->d_name[0])
-         || NAMELEN (dp) > sizeof ("4294967295") - 1)
-       continue;
+         if (!isdigit (dp->d_name[0])
+             || NAMELEN (dp) > sizeof ("4294967295") - 1)
+           continue;
 
-      tid = atoi (dp->d_name);
-      core = linux_common_core_of_thread (ptid_build (pid, tid, 0));
+         tid = atoi (dp->d_name);
+         core = linux_common_core_of_thread (ptid_build (pid, tid, 0));
 
-      if (core >= 0)
-       {
-         ++cores[core];
-         ++task_count;
+         if (core >= 0)
+           {
+             ++cores[core];
+             ++task_count;
+           }
        }
-    }
 
-  closedir (dir);
+      closedir (dir);
+    }
 
   return task_count;
 }