I just faced an issue, which I fixed locally, which happened while debugging a remote target with an inaccurate timer. What's happening is: toplev::~toplev () calls g_timer->print (stderr); timer::print (FILE *fp) calls validate_phases(fp); timer::validate_phases (FILE *fp) const calls gcc_unreachable (); gcc_unreachable () calls (fancy_abort (__FILE__, __LINE__, __FUNCTION__)) fancy_abort (const char *file, int line, const char *function) calls internal_error ("in %s, at %s:%d", function, trim_filename (file), line); internal_error (const char *gmsgid, ...) calls report_diagnostic (&diagnostic); diagnostic_report_diagnostic (diagnostic_context *context, diagnostic_info *diagnostic) calls pp_format (context->printer, &diagnostic->message); . I stop here, and you can see why it crashes; context->printer was closed before entering the destructor of toplev in toplev::main diagnostic_finish (global_dc); maybe someone wants to fix this. Stefan