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 3fc0eb4..f5a7969 100644 (file)
@@ -48,7 +48,7 @@ void xbt_backtrace_display(void) {
   e.remote=0;
   xbt_ex_free(e);
 #else 
-  fprintf(stderr,"No backtrace on this arch");
+  ERROR0("No backtrace on this arch");
 #endif
 }
 
@@ -109,7 +109,7 @@ void xbt_ex_setup_backtrace(xbt_ex_t *e)  {
       FILE *maps;
       char maps_buff[512];
 
-      long int addr,offset;
+      long int addr,offset=0;
       char *p,*p2;
 
       char *subcmd;
@@ -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");