mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-06-25 02:41:45 +02:00
![]() After successfully stepping the cursor on ARM, the proc info is invalidated only in dwarf_step(). Invalidate the proc info also when stepping with the non-dwarf based methods. This fixes unw_get_proc_info() returning stale data. The core dump unwinder can be used for demonstrating the bug. When unwinding based only on DWARF data, the proc info is correct: $ UNW_ARM_UNWIND_METHOD=1 ./test-coredump-unwind core `cat backing_files` 2>/dev/null ip=0x000086d8 proc=000086d4-000086dc handler=0x00000000 lsda=0x00000000 ip=0x000086ef proc=000086dc-000086f2 handler=0x00000000 lsda=0x00000000 ip=0x000086e7 proc=000086dc-000086f2 handler=0x00000000 lsda=0x00000000 ip=0x00008597 proc=00008584-0000859a handler=0x00000000 lsda=0x00000000 ip=0x76e3ac3b proc=76e3aba0-76e3acec handler=0x00000000 lsda=0x00000000 When unwinding based only on the exidx method, we see the proc info lagging behind: $ UNW_ARM_UNWIND_METHOD=4 ./test-coredump-unwind core `cat backing_files` 2>/dev/null ip=0x000086d8 proc=000086d4-000086db handler=0x00000000 lsda=0x00000000 ip=0x000086ef proc=000086d4-000086db handler=0x00000000 lsda=0x00000000 ip=0x000086e7 proc=000086dc-000086f3 handler=0x00000000 lsda=0x00000000 ip=0x00008597 proc=000086dc-000086f3 handler=0x00000000 lsda=0x00000000 ip=0x76e3ac3b proc=00008584-0000859b handler=0x00000000 lsda=0x00000000 ip=0x000085c3 proc=76e3aba0-76e3ae4b handler=0x00000000 lsda=0x00000000 Finally, with this patch applied, we get the desired proc info also with the exidx unwinder: $ UNW_ARM_UNWIND_METHOD=4 ./test-coredump-unwind core `cat backing_files` 2>/dev/null ip=0x000086d8 proc=000086d4-000086db handler=0x00000000 lsda=0x00000000 ip=0x000086ef proc=000086dc-000086f3 handler=0x00000000 lsda=0x00000000 ip=0x000086e7 proc=000086dc-000086f3 handler=0x00000000 lsda=0x00000000 ip=0x00008597 proc=00008584-0000859b handler=0x00000000 lsda=0x00000000 ip=0x76e3ac3b proc=76e3aba0-76e3ae4b handler=0x00000000 lsda=0x00000000 ip=0x000085c3 proc=0000859c-00008613 handler=0x00000000 lsda=0x00000000 |
||
---|---|---|
.. | ||
arm | ||
coredump | ||
dwarf | ||
hppa | ||
ia64 | ||
mi | ||
mips | ||
ppc | ||
ppc32 | ||
ppc64 | ||
ptrace | ||
setjmp | ||
unwind | ||
x86 | ||
x86_64 | ||
elf32.c | ||
elf32.h | ||
elf64.c | ||
elf64.h | ||
elfxx.c | ||
elfxx.h | ||
Makefile.am | ||
os-freebsd.c | ||
os-hpux.c | ||
os-linux.c | ||
os-linux.h |