On 04/11/17 02:56 PM, Doug Moore wrote:
> If I modify tests/Gtest-bt.c with this patch:
> 
> diff --git a/tests/Gtest-bt.c b/tests/Gtest-bt.c
> index 802dd08..82d8317 100644
> --- a/tests/Gtest-bt.c
> +++ b/tests/Gtest-bt.c
> @@ -86,9 +86,10 @@ do_backtrace (void)
>  
>           if (unw_get_proc_info (&cursor, &pi) == 0)
>             {
> -             printf ("\tproc=0x%lx-0x%lx\n\thandler=0x%lx lsda=0x%lx 
> gp=0x%lx",
> +             printf ("\tproc=0x%lx-0x%lx\n\thandler=0x%lx lsda=0x%lx 
> gp=0x%lx uw=0x%lx",
>                   (long) pi.start_ip, (long) pi.end_ip,
> -                 (long) pi.handler, (long) pi.lsda, (long) pi.gp);
> +                 (long) pi.handler, (long) pi.lsda, (long) pi.gp,
> +                 (long) pi.unwind_info);
>             }
>  
>  #if UNW_TARGET_IA64
> 
> and then I run 
> 
> ./Gtest-bt foo  | grep uw
> 
> with ‘foo’ for verbose output, and looking for the unwind info added by the 
> patch, I see that in every case, the unwind info is 0x0.

Ah, thanks for the example.

So it looks like this happens because put_unwind_info is called at the
end of dwarf_make_proc_info, to free the memory.  I don't think this
has changed recently - we would need an API to release the proc info
somehow, that I don't think currently exists?

_______________________________________________
Libunwind-devel mailing list
Libunwind-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to