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

Reply via email to