X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/edde8f7fbc1b74a81551bf9eb7bac1935b999296..598bcf2b304c5f1ae949aaa3fd9676886961f39f:/src/xbt/ex.c diff --git a/src/xbt/ex.c b/src/xbt/ex.c index 9768d5e640..579f63d2d1 100644 --- a/src/xbt/ex.c +++ b/src/xbt/ex.c @@ -65,6 +65,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ex, xbt, "Exception mecanism"); +XBT_EXPORT_NO_IMPORT(const xbt_running_ctx_t) __xbt_ex_ctx_initializer = XBT_RUNNING_CTX_INITIALIZER; + /* default __ex_ctx callback function */ xbt_running_ctx_t *__xbt_ex_ctx_default(void) { @@ -144,28 +146,29 @@ void xbt_ex_display(xbt_ex_t * e) xbt_ex_catname(e->category), e->value, e->msg, e->procname, thrower ? thrower : " in this process"); XBT_CRITICAL("%s", e->msg); + xbt_free(thrower); if (!e->remote && !e->bt_strings) xbt_ex_setup_backtrace(e); #ifdef HAVE_BACKTRACE - /* We have everything to build neat backtraces */ - { + if (e->used && e->bt_strings) { + /* We have everything to build neat backtraces */ 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]); - } -#else - fprintf(stderr, " at %s:%d:%s (no backtrace available on that arch)\n", - e->file, e->line, e->func); + } else #endif + { + fprintf(stderr, + "\n" + "** In %s() at %s:%d\n" + "** (no backtrace available)\n", + e->func, e->file, e->line); + } }