aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorVladimir Mezentsev <vladimir.mezentsev@oracle.com>2024-03-23 18:31:03 -0700
committerVladimir Mezentsev <vladimir.mezentsev@oracle.com>2024-03-25 16:29:41 -0700
commit99c3fe52d237eae546d7de484d0cfbd615ac192c (patch)
tree6ddaba97d85156d9e873fde679af8bd0e9043fcf /bfd
parent02d02fc7924992ddd98073b95810b957efdc421a (diff)
downloadgdb-99c3fe52d237eae546d7de484d0cfbd615ac192c.zip
gdb-99c3fe52d237eae546d7de484d0cfbd615ac192c.tar.gz
gdb-99c3fe52d237eae546d7de484d0cfbd615ac192c.tar.bz2
gprofng: fix infinite recursion on calloc with multi-threaded applications
libcollector uses pthread_getspecific() and pthread_setspecific() to access thread local memory. libcollector uses this memory to check that interposed functions (like malloc, calloc or free) don't have recursion. The first time we call calloc(), we call pthread_setspecific() to create a thread-specific value. On Ubuntu machine, pthread_setspecific() calls calloc(), and we cannot intercept such recursion. gcc supports thread-local storage. For example, static __thread int reentrance = 0; I rewrote code using this instead of pthread_setspecific(). gprofng/ChangeLog 2024-03-23 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/31460 * libcollector/heaptrace.c: Use the __thread variable to check for * reentry. Clean up code.
Diffstat (limited to 'bfd')
0 files changed, 0 insertions, 0 deletions