gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r15636 - gnunet/src/util
Date: Wed, 15 Jun 2011 10:29:12 +0200

Author: toelke
Date: 2011-06-15 10:29:12 +0200 (Wed, 15 Jun 2011)
New Revision: 15636

Modified:
   gnunet/src/util/scheduler.c
Log:
debug fds

Modified: gnunet/src/util/scheduler.c
===================================================================
--- gnunet/src/util/scheduler.c 2011-06-15 08:24:00 UTC (rev 15635)
+++ gnunet/src/util/scheduler.c 2011-06-15 08:29:12 UTC (rev 15636)
@@ -46,6 +46,11 @@
 #define EXECINFO GNUNET_NO
 
 /**
+ * Check each file descriptor before adding
+ */
+#define DEBUG_FDS GNUNET_NO
+
+/**
  * Depth of the traces collected via EXECINFO.
  */
 #define MAX_TRACE_DEPTH 50
@@ -1225,6 +1230,42 @@
   t->num_backtrace_strings = backtrace(backtrace_array, MAX_TRACE_DEPTH);
   t->backtrace_strings = backtrace_symbols(backtrace_array, 
t->num_backtrace_strings);
 #endif
+#ifdef DEBUG_FDS
+  if (-1 != rfd)
+    {
+      int flags = fcntl(rfd, F_GETFD);
+      if (flags == -1 && errno == EBADF)
+        {
+          GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Got invalid file descriptor 
%d!\n", rfd);
+#if EXECINFO
+          int i;
+
+          for (i=0;i<t->num_backtrace_strings;i++)
+            GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                        "Trace: %s\n",
+                        t->backtrace_strings[i]);
+#endif
+          GNUNET_assert(0);
+        }
+    }
+  if (-1 != wfd)
+    {
+      int flags = fcntl(wfd, F_GETFD);
+      if (flags == -1 && errno == EBADF)
+        {
+          GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Got invalid file descriptor 
%d!\n", wfd);
+#if EXECINFO
+          int i;
+
+          for (i=0;i<t->num_backtrace_strings;i++)
+            GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                        "Trace: %s\n",
+                        t->backtrace_strings[i]);
+#endif
+          GNUNET_assert(0);
+        }
+    }
+#endif
   t->read_fd = rfd;
   GNUNET_assert(wfd >= -1);
   t->write_fd = wfd;




reply via email to

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