From 9e334c58dae21a26059085c7e0b1363776a8e28a Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 23 Jun 2010 15:20:40 +0000 Subject: diag --- src/util/scheduler.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/util/scheduler.c b/src/util/scheduler.c index 1f77d3a68..8e8fe392c 100644 --- a/src/util/scheduler.c +++ b/src/util/scheduler.c @@ -31,6 +31,13 @@ #include "gnunet_time_lib.h" #ifdef LINUX #include "execinfo.h" + +/** + * Use lsof to generate file descriptor reports on select error? + * (turn of for stable releases). + */ +#define USE_LSOF GNUNET_YES + /** * Obtain trace information for all scheduler calls that schedule tasks. */ @@ -658,6 +665,15 @@ GNUNET_SCHEDULER_run (GNUNET_SCHEDULER_Task task, void *task_cls) if (errno == EINTR) continue; GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "select"); +#ifndef MINGW +#if USE_LSOF + char lsof[512]; + snprintf (lsof, sizeof (lsof), "lsof -p %d", getpid()); + close (1); + dup2 (2, 1); + system (lsof); +#endif +#endif abort (); break; } -- cgit v1.2.3