Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 970e6c681fe1112879fad9698426b9279b7226a3
https://github.com/WebKit/WebKit/commit/970e6c681fe1112879fad9698426b9279b7226a3
Author: Chris Dumez <[email protected]>
Date: 2026-03-10 (Tue, 10 Mar 2026)
Changed paths:
M Source/WebKit/Shared/ios/WebParentalControlsURLFilter.mm
Log Message:
-----------
MobileSafari at WebKit: WTF::Function<void (bool)>::operator() const
https://bugs.webkit.org/show_bug.cgi?id=309555
rdar://171864197
Reviewed by David Kilzer and Ryosuke Niwa.
The crash is super generic so it was not obvious what the root cause was
at first. However, looking at the recent logging before the crash, the
issue became clearer:
1. Parental controls are active — ParentalControlsURLFilter::isEnabled
returns 1
2. Content filter blocks the navigation — "Ignoring request to load
this main resource because it was handled by content filter"
3. User attempts to unblock — a synthetic click triggers the unblock
flow
4. Remote PIN entry service fails — attempt to open
com.apple.WebContentFilter.remoteUI.WebContentAnalysisUI returns
NotFound / InvalidRequest
5. WCRRemotePINEntryViewController is nil — the PIN entry view
controller failed to initialize
6. Two allowURL result 0 messages from different threads (0x036ed and
0x031bc) — the unblock is denied
7. Crash — a null CompletionHandler<void(bool)> is invoked from the
main RunLoop
The issue appears to be that [BEWebContentFilter allowURL:completionHandler:]
may call its completion handler more than once (rdar://172157523). Until
this is fixed, we're guarding against it on WebKit side by null checking
the completion handler before calling it.
* Source/WebKit/Shared/ios/WebParentalControlsURLFilter.mm:
(WebKit::WebParentalControlsURLFilter::allowURL):
Canonical link: https://commits.webkit.org/308967@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications