for (i=0; environ[i]; i++) {
if (!strncmp("PATH=",environ[i], 5)) {
xbt_dynar_t path=xbt_str_split(environ[i] + 5, ":");
- int cpt;
+ unsigned int cpt;
char *data;
xbt_dynar_foreach(path, cpt, data) {
if (binary_name)
free(addrs[i]);
/* Mask the bottom of the stack */
- if (!strncmp("main",line_func,strlen("main"))) {
- int j;
- for (j=i+1; j<e->used; j++)
- free(addrs[j]);
- e->used = i+1;
- }
-
- if (!strncmp("__context_wrapper",line_func,strlen("__context_wrapper"))) {
+ if (!strncmp("main",line_func,strlen("main")) ||
+ !strncmp("xbt_thread_context_wrapper",line_func,strlen("xbt_thread_context_wrapper"))) {
int j;
for (j=i+1; j<e->used; j++)
free(addrs[j]);
e->used = i;
+
+ if (!strncmp("xbt_thread_context_wrapper",line_func,strlen("xbt_thread_context_wrapper"))) {
+ e->used++;
+ e->bt_strings[i] = bprintf("** (in a separate thread)");
+ }
}
}
/* the externally visible API */
-XBT_PUBLIC_DATA(ex_ctx_cb_t) __xbt_ex_ctx = &__xbt_ex_ctx_default;
-XBT_PUBLIC_DATA(ex_term_cb_t) __xbt_ex_terminate = &__xbt_ex_terminate_default;
+XBT_EXPORT_NO_IMPORT(ex_ctx_cb_t) __xbt_ex_ctx = &__xbt_ex_ctx_default;
+XBT_EXPORT_NO_IMPORT(ex_term_cb_t) __xbt_ex_terminate = &__xbt_ex_terminate_default;
void xbt_ex_free(xbt_ex_t e) {