Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[surf] Rename callback registration functions
[simgrid.git] / src / xbt / ex.c
index 1e48d4c..c4438a5 100644 (file)
@@ -1,6 +1,6 @@
 /* ex - Exception Handling                                                  */
 
-/* Copyright (c) 2005-2014. The SimGrid Team.
+/* Copyright (c) 2005-2015. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /*  Copyright (c) 2002-2004 Ralf S. Engelschall <rse@engelschall.com>       */
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "portable.h"           /* execinfo when available */
+#include "src/portable.h"           /* execinfo when available */
 #include "xbt/ex.h"
 #include "xbt/str.h"
 #include "xbt/synchro_core.h"
-#include "xbt_modinter.h"       /* backtrace initialization headers */
+#include "src/xbt_modinter.h"       /* backtrace initialization headers */
 
-#include "xbt/ex_interface.h"
+#include "src/xbt/ex_interface.h"
 #include "simgrid/sg_config.h"  /* Configuration mechanism of SimGrid */
 
 
@@ -124,11 +124,11 @@ void xbt_backtrace_display_current(void)
 }
 
 #if defined(HAVE_EXECINFO_H) && defined(HAVE_POPEN) && defined(ADDR2LINE)
-# include "backtrace_linux.c"
+# include "src/xbt/backtrace_linux.c"
 #elif (defined(_XBT_WIN32) && defined (_M_IX86)) && !defined(__GNUC__)
-# include "backtrace_windows.c"
+# include "src/xbt/backtrace_windows.c"
 #else
-# include "backtrace_dummy.c"
+# include "src/xbt/backtrace_dummy.c"
 #endif
 
 /** @brief shows an exception content and the associated stack if available */
@@ -148,6 +148,11 @@ void xbt_ex_display(xbt_ex_t * e)
   XBT_CRITICAL("%s", e->msg);
   xbt_free(thrower);
 
+  if (xbt_initialized==0 || smx_cleaned) {
+         fprintf(stderr, "Ouch. SimGrid is not initialized yet, or already closing. No backtrace available.\n");
+         return; /* Not started yet or already closing. Trying to generate a backtrace would probably fail */
+  }
+
   if (!e->bt_strings)
     xbt_ex_setup_backtrace(e);
 
@@ -333,7 +338,7 @@ XBT_TEST_UNIT("variables", test_variables, "variable value preservation")
 {
   xbt_ex_t ex;
   int r1;
-  int _XBT_GNUC_UNUSED r2;
+  int XBT_ATTRIB_UNUSED r2;
   int v1;
   volatile int v2;