Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 24f5c63d5933cc7d8df89f94c8882b88f750d92a
https://github.com/WebKit/WebKit/commit/24f5c63d5933cc7d8df89f94c8882b88f750d92a
Author: Alex Christensen <[email protected]>
Date: 2024-12-16 (Mon, 16 Dec 2024)
Changed paths:
M Source/WebKit/UIProcess/WebPageProxy.cpp
Log Message:
-----------
Early return instead of terminating web process if a frame no longer exists
when receiving a message for it
https://bugs.webkit.org/show_bug.cgi?id=284686
rdar://141474694
Reviewed by Chris Dumez.
Site isolation introduces some new possible race conditions, such as when a
load happens in a frame in one
process, then that load redirects to another process, then is removed from the
DOM in another process.
If, before the UI process can tell the other processes that it was removed,
those processes send a message
with an update about that frame, I'm currently hitting MESSAGE_CHECK_BASE and
seeing the processes terminated.
This will make WebKit more robust against such newly necessary race conditions.
I verified that a complex
news website that hit these quite reliably with today's advertisements loads
reliably after this change.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didExplicitOpenForFrame):
(WebKit::WebPageProxy::willPerformClientRedirectForFrame):
(WebKit::WebPageProxy::didCancelClientRedirectForFrame):
(WebKit::WebPageProxy::didFailProvisionalLoadForFrame):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didFinishLoadForFrame):
(WebKit::WebPageProxy::didFailLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrameViaJS):
(WebKit::WebPageProxy::didReceiveTitleForFrame):
(WebKit::WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame):
(WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
(WebKit::WebPageProxy::didRunInsecureContentForFrame):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::willSubmitForm):
(WebKit::WebPageProxy::didUpdateHistoryTitle):
(WebKit::WebPageProxy::runJavaScriptAlert):
(WebKit::WebPageProxy::runJavaScriptConfirm):
(WebKit::WebPageProxy::runJavaScriptPrompt):
(WebKit::WebPageProxy::runBeforeUnloadConfirmPanel):
(WebKit::WebPageProxy::runOpenPanel):
(WebKit::WebPageProxy::printFrame):
(WebKit::WebPageProxy::focusedFrameChanged):
(WebKit::WebPageProxy::requestGeolocationPermissionForFrame):
(WebKit::WebPageProxy::enumerateMediaDevicesForFrame):
(WebKit::WebPageProxy::shouldAllowDeviceOrientationAndMotionAccess):
(WebKit::WebPageProxy::didAccessWindowProxyPropertyViaOpenerForFrame):
Canonical link: https://commits.webkit.org/287896@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes