https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64721
David Malcolm <dmalcolm at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|SIBAGRT turns into SIGSEGV |SIBABRT becomes a SIGSEGV |in jit testsuite |in jit testsuite --- Comment #1 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Currently we unconditionally install crash_handler as a signal_handler, and this itself (ironically) will crash if called after toplev::main cleans up the global_diagnostic_context. Three options: (A) We could unregister the signal handlers in toplev::finalize immediately before global_diagnostic_context has diagnostic_finish called on it, potentially restoring whatever signal handlers were there before. (B) Don't register signal-handlers at all when run from inside libgccjit. (C) Make creation of global_diagnostic_context be idempotent, and don't clean it up. (B) seems best from the POV of a library that aims to be thread-safe: don't touch signal-handlers when inside libgccjit. I have a patch for this.