Unwinding through exception handlers when PC is NULL.
Andrew Haley
aph@redhat.com
Sat May 7 08:47:00 GMT 2011
On 06/05/11 02:24, David Daney wrote:
> This happens because the libgcc unwinder cannot find unwinding
> information for the PC at the point of the SIGSEGV.
>
> However, we know that usually when we end up with a PC of zero, it is
> because we called through a NULL function pointer. In this case, we
> could use the return address (perhaps with a slight adjustment to
> compensate for the call instruction) to do the unwinding.
>
> Would it make any sense to build something like this into libgcc?
>
> Or if we want to do this do we need to patch up the register state
> before executing the throw?
This isn't really an either/or. It makes sense to robustify all
that code so it does not segv.
Andrew.
More information about the Gcc
mailing list