The following stack shows backtrace () requiring malloc () when initializing.
This makes writing memory tools slightly problematic. In the example, the code
deadlocks in my malloc () during initialization:

#0  malloc (size=28) at example.cpp:17
#1  0x006821d8 in _dl_map_object_deps () from /lib/ld-linux.so.2
#2  0x00791159 in dl_open_worker () from /lib/tls/libc.so.6
#3  0x006830fe in _dl_catch_error () from /lib/ld-linux.so.2
#4  0x00791cb8 in _dl_open () from /lib/tls/libc.so.6
#5  0x0079304d in do_dlopen () from /lib/tls/libc.so.6
#6  0x006830fe in _dl_catch_error () from /lib/ld-linux.so.2
#7  0x0079312e in __libc_dlopen_mode () from /lib/tls/libc.so.6
#8  0x0076fdfa in init () from /lib/tls/libc.so.6
#9  0x0091dc8b in pthread_once () from /lib/tls/libpthread.so.0
#10 0x007700f9 in backtrace () from /lib/tls/libc.so.6
#11 0x080486ff in malloc (size=4) at example.cpp:29
#12 0x080487fc in main () at example.cpp:55

This appears to be an issue in newer versions (~3.4.6 and above). Older
versions do not appear to initialize in this manner (tested with 3.2.3).


-- 
           Summary: backtrace () requires malloc () during initialization
           Product: gcc
           Version: 3.4.6
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: stephenc at cisco dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34129

Reply via email to