Handler process exits before all pending crashes are processed

8 views
Skip to first unread message

Jonathan Jones

unread,
Jan 9, 2026, 10:29:09 AM (3 days ago) Jan 9
to Crashpad-dev
Hi folks,

We have a handler process that is monitoring multiple client processes.  However, if an event occurs where the client processes simultaneously crash (e.g. by sending SIGQUIT using ctrl-\ from the controlling terminal), the handler process only processes the first of these crashes.  The handler process then exits cleanly (it is not killed by the SIGQUIT), which then leaves the remaining crashes as pending.

Is there a way to keep the handler process running until it finishes processing all pending crashes, even if all the client processes are gone?

Best wishes,
Jonathan Jones
MathWorks

Joshua Peraza

unread,
Jan 9, 2026, 11:59:54 AM (3 days ago) Jan 9
to Jonathan Jones, Crashpad-dev
That is how it's meant to work. Are you using CrashpadClient::StartHandler() in your first client process? and CrashpadClient::SetHandlerSocket() in all the others? Each client will wait for finite time for crashpad_handler to produce a dump before giving up.

--
You received this message because you are subscribed to the Google Groups "Crashpad-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to crashpad-dev...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/crashpad-dev/013cd839-730d-4bbf-80fb-2f6ba2a072dbn%40chromium.org.

Jonathan Jones

unread,
Jan 9, 2026, 12:10:06 PM (3 days ago) Jan 9
to Crashpad-dev, Joshua Peraza, Crashpad-dev, Jonathan Jones
That is exactly how we are using it (one client starts, the remaining clients connect).

I'll note that we are getting minidumps for all the clients that crashed.  The problem is only one of the minidumps are uploaded.  The remaining minidumps are left as pending.  The next time the handler process is started, it proceeds to upload all the minidumps still marked as pending.  We want to have all the pending minidumps uploaded while the original handler process is still running.

Joshua Peraza

unread,
Jan 9, 2026, 12:29:49 PM (3 days ago) Jan 9
to Jonathan Jones, Crashpad-dev
Ah, in thase case adding --no-rate-limit to your crashpad_handler arguments in StartHandler() may help but I think still won't ensure your dumps are uploaded before crashpad_handler exits.

CrashReportUploadThread::ProcessPendingReports is triggered each time crashpad_handler creates a minidump. The function is written to upload at least the one dump before crashpad_handler exits. If your other client processes crash too late to be part of known_pending_report_uuids_, but early enough for the client processes to have exited and triggered (!thread_.is_running) then crashpad_handler will exit without uploading those other dumps. You could modify this function to have crashpad_handler continue trying to upload pending minidumps even if the thread has been told to stop because all clients have exited.

Reply all
Reply to author
Forward
0 new messages