Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Some new functions to this. Bloatware, here we come.
[simgrid.git] / src / xbt / ex.c
index 8ee3c3d..f5a7969 100644 (file)
@@ -147,12 +147,15 @@ void xbt_ex_setup_backtrace(xbt_ex_t *e)  {
        DEBUG4("%#lx %s [%#lx-%#lx]",
               addr, found? "in":"out of",first,last);
       }
-      if (!found) 
-       CRITICAL0("Problem while reading the maps file");
-
       fclose(maps);
       free(maps_name);
 
+      if (!found) {
+       WARN0("Problem while reading the maps file");
+       e->bt_strings[i] = bprintf("**   In ?? (%s)", backtrace[i]);
+       continue;
+      }
+
       /* Ok, Found the offset of the maps line containing the searched symbol. 
         We now need to substract this from the address we got from backtrace.
       */
@@ -209,10 +212,11 @@ void xbt_ex_display(xbt_ex_t *e)  {
   if (e->remote)
     bprintf(" on host %s(%ld)",e->host,e->pid);
 
+  CRITICAL1("%s",e->msg);
   fprintf(stderr,
          "** SimGrid: UNCAUGHT EXCEPTION received on %s(%ld): category: %s; value: %d\n"
          "** %s\n"
-         "** Thrown by %s()%s",
+         "** Thrown by %s()%s\n",
          gras_os_myname(),gras_os_getpid(),
          xbt_ex_catname(e->category), e->value, e->msg,
          e->procname,thrower?thrower:" in this process");