Bug 1579 - Malloc is always called by stack back strace function
Summary: Malloc is always called by stack back strace function
Status: RESOLVED FIXED
Alias: None
Product: glibc
Classification: Unclassified
Component: libc (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Ulrich Drepper
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-10-27 21:59 UTC by H.J. Lu
Modified: 2016-05-17 18:36 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2005-10-27 21:59:43 UTC
In /usr/include/execinfo.h, there are

/* This function is similar to backtrace_symbols() but it writes the result
   immediately to a file and can therefore also be used in situations where
   malloc() is not usable anymore.  */
extern void backtrace_symbols_fd (void *__const *__array, int __size, int __fd)
     __THROW __nonnull ((1));

The problem is stack bcktrace functions in glibc do dlopen (libgcc_s.so.1),
which will call malloc. That is malloc will be always called no matter which
function you use. Even if you build the executable with -shared-libgcc,
dl_open_worker will call dl_map_object_deps which will call malloc.

What dl_open_worker should do when a DSO to be dlopened is already on the
DT_NEEDED list in the executable?
Comment 1 Ulrich Drepper 2005-10-31 15:28:29 UTC
I changed the comment.