Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
don't try to compute the backtrace if we have no process name (only occure with ...
[simgrid.git] / src / xbt / ex.c
index 5eae5fc..1b141a4 100644 (file)
@@ -58,7 +58,7 @@
 # define HAVE_BACKTRACE 1       /* Hello linux box */
 #endif
 
-#if defined(WIN32) && defined(_M_IX86) && !defined(__GNUC__)
+#if defined(_XBT_WIN32) && defined(_M_IX86) && !defined(__GNUC__)
 # define HAVE_BACKTRACE 1       /* Hello x86 windows box */
 #endif
 
@@ -66,7 +66,7 @@
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ex, xbt, "Exception mecanism");
 
 /* default __ex_ctx callback function */
-ex_ctx_t *__xbt_ex_ctx_default(void)
+xbt_running_ctx_t *__xbt_ex_ctx_default(void)
 {
   /* Don't scream: this is a default which is never used (so, yes,
      there is one setjump container by running entity).
@@ -78,7 +78,7 @@ ex_ctx_t *__xbt_ex_ctx_default(void)
      It also gets overriden in xbt/context.c when using ucontextes (as well as
      in Java for now, but after the java overhaul, it will get cleaned out)
    */
-  static ex_ctx_t ctx = XBT_CTX_INITIALIZER;
+  static xbt_running_ctx_t ctx = XBT_RUNNING_CTX_INITIALIZER;
 
   return &ctx;
 }
@@ -122,7 +122,7 @@ void xbt_backtrace_display_current(void)
 
 #if defined(HAVE_EXECINFO_H) && defined(HAVE_POPEN) && defined(ADDR2LINE)
 # include "backtrace_linux.c"
-#elif (defined(WIN32) && defined (_M_IX86)) && !defined(__GNUC__)
+#elif (defined(_XBT_WIN32) && defined (_M_IX86)) && !defined(__GNUC__)
 # include "backtrace_windows.c"
 #else
 # include "backtrace_dummy.c"
@@ -153,6 +153,10 @@ void xbt_ex_display(xbt_ex_t * e)
   {
     int i;
 
+    if (!xbt_binary_name) {
+      fprintf(stderr, "variable 'xbt_binary_name' set to NULL. Cannot compute the backtrace\n");
+      return;
+    }
     fprintf(stderr, "\n");
     for (i = 0; i < e->used; i++)
       fprintf(stderr, "%s\n", e->bt_strings[i]);
@@ -174,12 +178,12 @@ void __xbt_ex_terminate_default(xbt_ex_t * e)
 }
 
 /* the externally visible API */
-XBT_EXPORT_NO_IMPORT(ex_ctx_cb_t) __xbt_ex_ctx = &__xbt_ex_ctx_default;
+XBT_EXPORT_NO_IMPORT(xbt_running_ctx_fetcher_t) __xbt_running_ctx_fetch = &__xbt_ex_ctx_default;
 XBT_EXPORT_NO_IMPORT(ex_term_cb_t) __xbt_ex_terminate =
-  &__xbt_ex_terminate_default;
+    &__xbt_ex_terminate_default;
 
 
-     void xbt_ex_free(xbt_ex_t e)
+void xbt_ex_free(xbt_ex_t e)
 {
   int i;
 
@@ -337,7 +341,7 @@ XBT_TEST_UNIT("cleanup", test_cleanup, "cleanup handling")
   TRY {
     v1 = 5678;
     THROW0(1, 2, "blah");
-  } CLEANUP {
+  } TRY_CLEANUP {
     if (v1 != 5678)
       xbt_test_fail1("v1 = %d (!= 5678)", v1);
     c = 1;
@@ -385,7 +389,7 @@ static void bad_example(void)
     cp3 = mallocex(SMALLAMOUNT);
     strcpy(cp1, "foo");
     strcpy(cp2, "bar");
-  } CLEANUP {
+  } TRY_CLEANUP {
     if (cp3 != NULL)
       free(cp3);
     if (cp2 != NULL)
@@ -422,7 +426,7 @@ static void good_example(void)
       cp3 = mallocex(SMALLAMOUNT);
       strcpy(cp1, "foo");
       strcpy(cp2, "bar");
-    } CLEANUP {                 /*04 */
+    } TRY_CLEANUP {             /*04 */
       printf("cp3=%s", cp3 == NULL /*02 */ ? "" : cp3);
       if (cp3 != NULL)
         free(cp3);
@@ -437,4 +441,4 @@ static void good_example(void)
   }
   /* end_of_good_example */
 }
-#endif /* SIMGRID_TEST */
+#endif                          /* SIMGRID_TEST */