libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libunwind-devel] [PATCH 6/8] Recognise and unwind through PLT.


From: Arun Sharma
Subject: Re: [Libunwind-devel] [PATCH 6/8] Recognise and unwind through PLT.
Date: Wed, 28 Apr 2010 12:00:46 -0700

On Wed, Apr 28, 2010 at 11:51 AM, Lassi Tuura <address@hidden> wrote:
Hi,

> Actually, I get failures even after applying this patch. Ironically, I traced them to the lack of unwind info in src/x86_64/getcontext.S
>
> (gdb) bt
> #0  do_backtrace (may_print=1, get_proc_name=1) at test-async-sig.c:113
> #1  0x0000000000400f01 in sighandler (signal=<value optimized out>) at test-async-sig.c:136
> #2  <signal handler called>
> #3  _Ux86_64_getcontext () at x86_64/getcontext.S:65
> #4  0x0000000000400c5f in do_backtrace (may_print=0, get_proc_name=0) at test-async-sig.c:80
> #5  0x00000000004010bf in main (argc=<value optimized out>, argv=<value optimized out>) at test-async-sig.c:182
>
> Your changes are merely exposing an existing bug, not causing them.

Glad to hear that. Are you waiting for anything else from me on these patches?

Actually, compiling with -fasynchronous-unwind-tables + CFI annotations in getcontext.S fixed only one regression (test-async-sig). The other regression (run-ptrace-mapper) is still there. It's a bit harder to debug (gdb doesn't work well). That's the only thing holding your first patch set back.

Good run:

 >_Ux86_64_init_remote: (cursor=0x7fff7a5c1800)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = c3a4, segbase = 2ae3d541cdfc, debug_frame_base = 0, fde_addr = 2ae3d54291a0
 >_Ux86_64_step: (cursor=0x7fff7a5c1800, ip=0x00002ae3d53474ae, cfa=0x00007fffd5e70870)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = c3a4, segbase = 2ae3d541cdfc, debug_frame_base = 0, fde_addr = 2ae3d54291a0
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 40, segbase = 400ab0, debug_frame_base = 0, fde_addr = 400af0
 >_Ux86_64_step: (cursor=0x7fff7a5c1800, ip=0x0000000000400918, cfa=0x00007fffd5e708a0)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = 612c, segbase = 2ae3d541cdfc, debug_frame_base = 0, fde_addr = 2ae3d5422f28
 >_Ux86_64_step: (cursor=0x7fff7a5c1800, ip=0x00002ae3d52fb5a6, cfa=0x00007fffd5e708e0)
 >_Ux86_64_dwarf_search_unwind_table: IP 400768 inside range 400000-400b6c, but no explicit unwind info found
 >_Ux86_64_step: (cursor=0x7fff7a5c1800, ip=0x0000000000400769, cfa=0x00007fffd5e70990)
 >_Ux86_64_dwarf_search_unwind_table: IP 400768 inside range 400000-400b6c, but no explicit unwind info found

Bad run:

 >_Ux86_64_init_remote: (cursor=0x7fff7a5c1800)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = c3a4, segbase = 2ae3d541cdfc, debug_frame_base = 0, fde_addr = 2ae3d54291a0
 >_Ux86_64_step: (cursor=0x7fff7a5c1800, ip=0x00002ae3d53474b2, cfa=0x00007fffd5e70898)
 >_Ux86_64_dwarf_search_unwind_table: e->fde_offset = c3a4, segbase = 2ae3d541cdfc, debug_frame_base = 0, fde_addr = 2ae3d54291a0
 >_Ux86_64_step: (cursor=0x7fff7a5c1800, ip=0x00007fffd5e709a0, cfa=0x00007fffd5e708c8)
 >_Ux86_64_step: [RBP=0x7fffd5e708a8] = 0x100400950 (cfa = 0x7fffd5e708c8)
 >_Ux86_64_step: Frame Chain [RIP=0x100400958] = 0xffffffffffffffff
FAILURE: unw_step() returned -8 for ip=ffffffffffffffff (start ip=2ae3d53474b2)
unwind failed with ret=-8

 -Arun 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]