On Wed, Apr 28, 2010 at 11:51 AM, Lassi Tuura <[email protected]> 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
_______________________________________________
Libunwind-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to