fix: WebView2 ACCESS_VIOLATION on rapid dispose/create cycles #325
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Problem
When a WebView is disposed and a new one is created immediately after, an ACCESS_VIOLATION can occur. This happens because:
thispointer are not cleared before destructionChanges
ClearCallbacks()public method andUnregisterEventHandlers()private methodUnregisterEventHandlers()andClearCallbacks()beforeClose()in destructorsetMuted()method for pre-dispose cleanupTesting
Tested with 100+ rapid dispose/create cycles without crash (previously crashed within 2-3 cycles).
Known Issues (minor, deferred)
graphics_context.cc: Minor COM object leak (once per app launch) - added TODO commentwebview_bridge.cc: Defensive callback clearing suggestion - added TODO comment🤖 Generated with Claude Code