Re: catch SIGSEGV in the demangler

Tom Tromey
2013-01-18T18:09:08Z

Tom> I'm primarily interested in opinions on whether this is even a good
Tom> idea. I'm on the fence about it myself.

Pedro> Me too. I'd rather all bugs in the demangler were fixed. :-)

Yeah. But there will be future crashes too.

Tom> It's far from clear that it is safe to call throw_exception from a
Tom> signal handler.

Pedro> Yeah. It's risky. It uses the heap (malloc/free), so
Pedro> if the wrapped code crashes within malloc or free (e.g.,
Pedro> corrupted heap), then the handler may e.g., deadlock
Pedro> (the handler crashing wouldn't be that bad, since we're
Pedro> already crashing). It also calls clear_sigint_flag,
Pedro> which with python enabled is probably not very reentrant or
Pedro> async signal safe either, as it calls into python, which I can
Pedro> imagine to be a problem is you wrap all SEGVs throughtout
Pedro> GDB's execution, instead of just over the demangler, which
Pedro> won't normally call into python.

I think Python isn't an issue. PyOS_InterruptOccurred is reasonably
unobjectionable. It is a low-level thing, part of Python's own
signal-handling code.

We probably shouldn't call clear_quit_flag in there at all.
It wouldn't be hard to avoid this in the SEGV case at least.
That way a SEGV wouldn't obscure a QUIT.

Tom