gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r11920 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r11920 - gnunet/src/util
Date: Thu, 24 Jun 2010 13:23:46 +0200

Author: nevans
Date: 2010-06-24 13:23:46 +0200 (Thu, 24 Jun 2010)
New Revision: 11920

Modified:
   gnunet/src/util/scheduler.c
Log:
fix execinfo debugging so it doesn't deref NULL pointer, still not entirely 
useful for the common person

Modified: gnunet/src/util/scheduler.c
===================================================================
--- gnunet/src/util/scheduler.c 2010-06-24 11:13:52 UTC (rev 11919)
+++ gnunet/src/util/scheduler.c 2010-06-24 11:23:46 UTC (rev 11920)
@@ -34,7 +34,7 @@
 
 /**
  * Use lsof to generate file descriptor reports on select error?
- * (turn of for stable releases).
+ * (turn off for stable releases).
  */
 #define USE_LSOF GNUNET_YES
 
@@ -548,26 +548,26 @@
                      "Task %u took %llums to be scheduled\n",
                      pos->id,
                      (unsigned long long) GNUNET_TIME_absolute_get_duration 
(pos->start_time).value);
-#if EXECINFO
-         int i;
-         for (i=0;i<pos->num_backtrace_strings;i++)
-           GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                       "Task %u trace %d: %s\n",
-                       pos->id,
-                       i,
-                       pos->backtrace_strings[i]);
-#endif
        }
 #endif
       tc.sched = sched;
       tc.reason = pos->reason;
       tc.read_ready = pos->read_set;
       tc.write_ready = pos->write_set;
-      pos->callback (pos->callback_cls, &tc);
 #if DEBUG_TASKS
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                   "Running task: %llu / %p\n", pos->id, pos->callback_cls);
 #endif
+      pos->callback (pos->callback_cls, &tc);
+#if EXECINFO
+      int i;
+      for (i=0;i<pos->num_backtrace_strings;i++)
+        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                    "Task %u trace %d: %s\n",
+                    pos->id,
+                    i,
+                    pos->backtrace_strings[i]);
+#endif
       sched->active_task = NULL;
       destroy_task (pos);
       sched->tasks_run++;
@@ -664,6 +664,7 @@
         {
           if (errno == EINTR)
             continue;
+
           GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "select");
 #ifndef MINGW
 #if USE_LSOF
@@ -778,7 +779,9 @@
   struct Task *prev;
   enum GNUNET_SCHEDULER_Priority p;
   void *ret;
-
+#if EXECINFO
+  int i;
+#endif
   prev = NULL;
   t = sched->pending;
   while (t != NULL)
@@ -1208,6 +1211,16 @@
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Adding task: %llu / %p\n", t->id, t->callback_cls);
 #endif
+#if EXECINFO
+  int i;
+
+  for (i=0;i<t->num_backtrace_strings;i++)
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "Task %u trace %d: %s\n",
+                  t->id,
+                  i,
+                  t->backtrace_strings[i]);
+#endif
   return t->id;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]