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

Reply via email to