Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Do not prepare backtraces for display in backtrace_current since this is a very long...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 23 Jan 2008 16:18:50 +0000 (16:18 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 23 Jan 2008 16:18:50 +0000 (16:18 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@5229 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/xbt/backtrace_linux.c
src/xbt/backtrace_windows.c
src/xbt/ex.c

index 63ca68e..1bec9b2 100644 (file)
@@ -15,6 +15,11 @@ extern char **environ;          /* the environment, as specified by the opengrou
 void xbt_backtrace_init(void) { }
 void xbt_backtrace_exit(void) { }
 
+void xbt_backtrace_current(xbt_ex_t * e) {
+  e->used = backtrace((void **) e->bt, XBT_BACKTRACE_SIZE);
+}
+
+  
 void xbt_ex_setup_backtrace(xbt_ex_t * e)
 {
   int i;
@@ -40,7 +45,8 @@ void xbt_ex_setup_backtrace(xbt_ex_t * e)
   struct stat stat_buf;
   char *binary_name = NULL;
    
-  e->used = backtrace((void **) e->bt, XBT_BACKTRACE_SIZE);
+  xbt_assert0(e && e->used,"Backtrace not setup yet, cannot set it up for display");
+   
   backtrace_syms = backtrace_symbols(e->bt, e->used);
   addrs = xbt_new(char *, e->used);
    
index 00ab8f9..bfb14aa 100644 (file)
@@ -165,12 +165,19 @@ int backtrace(void **buffer, int size);
  */
 char **backtrace_symbols(void *const *buffer, int size);
 
+void xbt_backtrace_current(xbt_ex_t * e) {
+  e->used = backtrace((void **) e->bt, XBT_BACKTRACE_SIZE);
+}
+
+
 void xbt_ex_setup_backtrace(xbt_ex_t * e)
 {
   int i;
-  char **backtrace_syms = backtrace_symbols(e->bt, e->used);
+  char **backtrace_syms;
 
-  e->used = backtrace((void **) e->bt, XBT_BACKTRACE_SIZE);
+  xbt_assert0(e && e->used,"Backtrace not setup yet, cannot set it up for display");
+   
+  backtrace_syms = backtrace_symbols(e->bt, e->used);
   e->bt_strings = NULL;
   /* parse the output and build a new backtrace */
   e->bt_strings = xbt_new(char *, e->used);
index 4eeaba0..ce75412 100644 (file)
@@ -56,13 +56,8 @@ ex_ctx_t *__xbt_ex_ctx_default(void) {
 /* Change raw libc symbols to file names and line numbers */
 void xbt_ex_setup_backtrace(xbt_ex_t *e);
 
-void xbt_backtrace_current(xbt_ex_t *e) {
-#ifdef HAVE_BACKTRACE
-  xbt_ex_setup_backtrace(e);
-#endif
-}
-
 void xbt_backtrace_display(xbt_ex_t *e) {
+  xbt_ex_setup_backtrace(e);
 #ifdef HAVE_BACKTRACE
   int i;