Closed GoogleCodeExporter closed 9 years ago
I'm sorry, my tcmalloc version is 2.0 not 1.2.
Original comment by qinqgq...@gmail.com
on 1 Mar 2012 at 2:08
Can you please run you program from within GDB. I believe you will need to set
an environment variable to tell tcmalloc it is running under gdb. I don't
recall off hand but grep under the src directory for "GDB". That should tell
you what environment variable to set. Hopefully this way we can see who
actually raised the SIGSEGV. Also, can you check the backtrace of all threads
to see if a thread is missing.
-Dave
Original comment by chapp...@gmail.com
on 2 Mar 2012 at 6:59
Thanks for your reply, Dave. I will have a try according to your comments. By
the way, i have checked all threads, and all threads are ok except thread 16.
Original comment by qinqgq...@gmail.com
on 5 Mar 2012 at 1:46
Taking a closer look at things above, it looks like a recursive call is being
made into tcmalloc::CentralFreeList::RemoveRange which is using a futex. If
memory serves me correctly futexes are not recursive. Not sure that there is
much we can do about this one since the culprit here is really the 'kpe*'.
Also, you may find it easier to use gcore to get a core of the hung process and
then use gdb to inspect the core.
Original comment by chapp...@gmail.com
on 23 Dec 2012 at 3:16
you're doing dlsym from inside signal handler. Because this thing calls malloc
internally it's not async-signal safe. So there's nothing to fix in tcmalloc
and you may get exactly same issue with any other malloc.
Original comment by alkondratenko
on 29 Aug 2013 at 4:48
Original issue reported on code.google.com by
qinqgq...@gmail.com
on 1 Mar 2012 at 2:04