Skip to content

Api process failed crash correlation#5586

Draft
GittyHarsha wants to merge 2 commits into
MicrosoftEdge:mainfrom
GittyHarsha:api-process-failed-crash-correlation
Draft

Api process failed crash correlation#5586
GittyHarsha wants to merge 2 commits into
MicrosoftEdge:mainfrom
GittyHarsha:api-process-failed-crash-correlation

Conversation

@GittyHarsha
Copy link
Copy Markdown
Contributor

No description provided.

GittyHarsha and others added 2 commits May 13, 2026 10:41
Adds CrashReport.md spec for the new ICoreWebView2StagingCrashReport
API that correlates WebView2 process failures with Watson crash reports.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix title from interface name to human-friendly 'Crash Report'
- Fix COM IDL code block language tag (cpp -> no tag)
- Fix WinRT/NET section headings to 'WinRT and .NET'
- Add __fastfail note: fields from WER event log, BucketId empty
- Add OOM exception code 0xe0000008 to ExceptionCode doc
- Soften CrashReportId dump filename claim
- Clean up BucketId doc (remove WER internal field names)
- Fix IsCustomCrashReportingEnabled: remove 'network hit' impl detail

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@GittyHarsha GittyHarsha requested a review from shrinaths May 13, 2026 09:14
Comment thread specs/CrashReport.md
[uuid(7c3a1b40-9f1e-4a5d-8b2e-2e0e7c1f3a55), object, pointer_default(unique)]
interface ICoreWebView2CrashReport : IUnknown {
/// A stable identifier for this crash report. Use this to locate the
/// corresponding dump file in `FailureReportFolderPath`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this only to find the dump file? If so, should we instead provide the path to the dump file?

Copy link
Copy Markdown
Contributor Author

@GittyHarsha GittyHarsha May 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@david-risney,
No, it also covers crashes that are not handled by the Crashpad handler, such as heap corruption (exception code: 0xC0000409). In these cases, no dump is generated or stored under UDF\Crashpad\Reports. Instead, we obtain the report ID by scanning the WER 1000 event.

The report ID is mainly useful for correlating a later event that arrives asynchronously via WER event 1001, which contains the bucket ID.

We are also looking to add support for this second event in the current WIP Diagnostic Monitor API.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have to update the spec file accordingly.

Comment thread specs/CrashReport.md
/// STATUS_ACCESS_VIOLATION, 0xC0000409 for STATUS_STACK_BUFFER_OVERRUN
/// (fast-fail), or 0xe0000008 for an out-of-memory termination.
// MSOWNERS: core (wvcore@microsoft.com)
[propget] HRESULT ExceptionCode([out, retval] UINT32* value);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is all of this data from the dump file? Should we just provide the dump file and its up to the host app to do what it likes with it?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, all of the data is obtained from the watson_metadata file in UDF\Crashpad, which is maintained by the Crashpad handler, as well as from the WER 1000 event (in the case of __fastfail).

However, all the fields exposed via this API, except the bucket ID, are also available in the dump.

But __fastfail crashes do not generate a dump, and thus host apps will not be able to obtain this data.

Comment thread specs/CrashReport.md
/// Basename of the module containing the faulting instruction,
/// e.g. "v8.dll". Never a full path.
// MSOWNERS: core (wvcore@microsoft.com)
[propget] HRESULT FaultingModuleName([out, retval] LPWSTR* value);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this different from CoreWebView2ProcessFailedEventArgs.FailureSourceModulePath (other than the new one is just the filename)? If not, we perhaps don't need this?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CoreWebView2ProcessFailedEventArgs.FailureSourceModulePath is populated only in cases of code integrity failures. That is a different category compared to our crashes.

Comment thread specs/CrashReport.md

/// Version of the faulting module, e.g. "128.0.2739.42".
// MSOWNERS: core (wvcore@microsoft.com)
[propget] HRESULT FaultingModuleVersion([out, retval] LPWSTR* value);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is the file version of the CoreWebView2ProcessFailedEventArgs.FailureSourceModulePath, then maybe we can use the same name format: FailureSourceModuleVersion

@david-risney david-risney requested a review from aluhrs13 May 14, 2026 05:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants