On Wed, May 5, 2010 at 6:26 PM, Stephen D. Bowline
<[email protected]>wrote:

> Platform: x86_64, RedHat 5, kernel 2.6.29
>
>  I have a situation in which a callstack sampler is unwinding the stack
> while a thread is in the midst of processing an exception.  This leads
> to deadlocks because __cxa_throw_ is ultimately calling
> dl_iterate_phdr() and so is the libunwind function
> dwarf_find_proc_info().
>
>
This is a long standing problem in libunwind with no generic solution yet.
Couple of possible approaches have been discussed before:

a) Implement your own async signal safe dl_iterate_phdr(). But this depends
on a modified libc.

b) Call dl_iterate_phdr() in a separate thread and cache the result in a
data structure that is safe to access from other threads without locks.

 -Arun
_______________________________________________
Libunwind-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to