Currently if crash reporting is not enabled then crashpad will dump a crash report to disk but not upload it.
It would be good to expose a method for users to selectively upload these crash reports by showing them in chrome://crashes and then adding some kind of UI to allow upload via a consent dialog.
We'd talked about improving this before. I don't think anyone actually looked into it though.
My first thought was to have a second block in chrome://crashes for "Crashes captured but not uploaded". Then, a link there to cause upload. Then we'd want an indication that it's pending, and then I guess it should move to the normal "Crashes" section, but instead of saying "Automatically reported..." something sensible about it being user-reported. But it might be jarring to have it move sections, especially if the user intends to use the "Provide additional details." link.
So perhaps, what we want is that all crashes are in the list, along with a clear indication of "Not uploaded", "Automatically reported", "You uploaded this" and the associated links.
In Crashpad's mode of operation, crashes are captured to disk regardless of consent bit. If we're going to allow users to upload those (that would be the default as far as Crashpad is concerned), we'd need clear messaging to the users who haven't already opted in to UMA to explain what they're uploading if they choose to. This would be different for Breakpad platforms as the capture is gated on consent rather than upload.
As far as implementing the backend:
- Crashpad can list reports that are both pending (not uploaded) and completed (both skipped due to throttling, and upload finished)
- It doesn't currently have an API to move it back into pending and force upload (would that only be valid for Skipped? Or also for Complete)
- This would also have to be plumbed into components/crash which exposes Crashpad to Chrome
-- Which brings up what to do about Linux/CrOS/Android -- I'm not sure about Breakpad's API or anyone's willingness to add the functionality there.
Yes, where you landed is basically exactly where my thinking was. about:crashes should show all crashes, uploaded or not. The ones that weren’t ever uploaded would have an “upload” button or link, which should work on anything that’s “completed” without having had a successful upload. Maybe also on things that are “pending” but waiting for another upload attempt. Allowing it for reports that were completed with a successful upload is probably too much power for users to have easy access to.
I’d like for crashpad_handler to just detect that something’s become “pending” and deal with it, but we probably also need a way to mark it as user-requested, to exempt it from the rate-limiting skip.
No sense in adding this to non-Crashpad platforms. It means that some platforms won’t get this feature until they get Crashpad, but we’re already spread thin enough without having to implement this same feature twice AND rework the Breakpad integration to be “always on.”
Verified the fix on Windows 7 & MAC (10.11.6) for Google Chrome Beta Version - 54.0.2840.27
Screen-recording is attached.
TE-Verified Labels are attached.
rnimmagadda@ Thanks for verifying that crashes will be successfully uploaded as before and there is no regression.
To see the new feature (e.g. manual uploads of not uploaded crashes) you can
* disable your network connection before generating a crash
* generate a crash
* verify that the crash will be displayed as not uploaded with the "Send now" link.
* then you can enable the network connection and press "Send now"
* now crash should be marked as 'upload requested by user' and will be uploaded within 15min
* if you don't want to wait 15min you can generate a new crash after which both crashes should be uploaded.
Let me know if you would need more info.
Comment 1 by scottmg@chromium.org
, Jun 16 2016