[Top][All Lists]

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

Re: [Libunwind-devel] unwinding from signal handler (i586)

From: Lassi Tuura
Subject: Re: [Libunwind-devel] unwinding from signal handler (i586)
Date: Mon, 22 Aug 2011 13:03:55 +0300


>> # ./main 
>> standard frame       ip:  0x80488f3, sp: 0xbfbcea00   sig_handler
>> Segmentation fault
>> I will try to find some time to debug this further...
> In the hope that it helps, here's the libunwind debug output from this
> segmentation fault:
> # UNW_DEBUG_LEVEL=9999 ./main 

>> access_reg: ebp -> bfb4ebe8
>> access_mem: mem[bfb4ebec] -> 0
>> _Ux86_dwarf_step: returning 0
>> _Ux86_step: returning 0
> Segmentation fault

Does it actually crash in libunwind? From above it sounds like it already
returned fine to your application and crashes there.

That said, a possible cause is that something (not necessarily libunwind) is
attempting to access EBP-based frame chain, but the next EBP is zero. That
might be because the parent is a signal frame, and isn't detected as such.
Are you handling that condition properly in your application? How do you build
and what sort of libc do you have? Does it have the signal trampoline annotated
with 'S' dwarf augmentation option? Do you have problems with the test suite?

FWIW, I don't really have experience using libunwind with ia32, only x86-64.
I fixed a number of related issues in x86-64 side, e.g. signal vs. normal frame
detection, so it's possible ia32 has similar issues which need to be fixed.
But it's a great deal more complex since there are far more legacy linux ia32
configurations around.


reply via email to

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