[webkit-changes] [WebKit/WebKit] 927f3f: Fix a specific crash where a WebPageProxy outlives...
Brady Eidson
noreply at github.com
Tue Jun 18 12:36:50 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 927f3f7dfde6e87358894dd55b3a583f4964c36e
https://github.com/WebKit/WebKit/commit/927f3f7dfde6e87358894dd55b3a583f4964c36e
Author: Brady Eidson <beidson at apple.com>
Date: 2024-06-18 (Tue, 18 Jun 2024)
Changed paths:
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
Log Message:
-----------
Fix a specific crash where a WebPageProxy outlives its PageClient
rdar://129558032
https://bugs.webkit.org/show_bug.cgi?id=275508
Reviewed by Youenn Fablet.
It's known that WebPageProxy objects can outlive their client view object (WKContentView or WebViewImpl)
And since the client view object owns the PageClient, WebPageProxy objects can exist without a PageClient.
The WebPageProxy::pageClient() accessor acknowledges this with a debug-only ASSERT.
The gamepad access hysteresis skips some of the other "close() or process crashed" cleanup that other
member objects perform, such as timers. So it's very possible that simply cancelling the hysteresis when
those events occur is good enough.
This patch does that, but also explicitly closes the hazard of assuming the PageClient is non-null.
I believe there's still a submarine risk of many other "protectedPageClient()" calls happening on a null
page client, driven by racey IPC timing. A followup will apply null checking more widely.
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::optionalProtectedPageClient const):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::recentGamepadAccessStateChanged):
* Source/WebKit/UIProcess/WebPageProxy.h:
Canonical link: https://commits.webkit.org/280131@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list