[webkit-changes] [WebKit/WebKit] c9ecc3: Crash in EventHandler::internalKeyEvent

Ryosuke Niwa noreply at github.com
Wed Aug 14 09:58:09 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c9ecc34db5806d25da911252b943b21dd94bc30f
      https://github.com/WebKit/WebKit/commit/c9ecc34db5806d25da911252b943b21dd94bc30f
  Author: Ryosuke Niwa <rniwa at webkit.org>
  Date:   2024-08-14 (Wed, 14 Aug 2024)

  Changed paths:
    M Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp
    M Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h
    M Source/WebCore/Modules/permissions/PermissionController.h
    M Source/WebCore/Modules/permissions/PermissionObserver.h
    M Source/WebCore/Modules/permissions/PermissionStatus.cpp
    M Source/WebCore/Modules/permissions/PermissionStatus.h
    M Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb
    M Source/WebCore/accessibility/atspi/AccessibilityRootAtspi.h
    M Source/WebCore/dom/WindowEventLoop.h
    M Source/WebCore/history/BackForwardController.h
    M Source/WebCore/history/CachedPage.cpp
    M Source/WebCore/history/CachedPage.h
    M Source/WebCore/inspector/InspectorFrontendAPIDispatcher.h
    M Source/WebCore/inspector/InspectorFrontendClientLocal.h
    M Source/WebCore/inspector/InspectorFrontendHost.h
    M Source/WebCore/loader/FrameLoader.cpp
    M Source/WebCore/loader/ProgressTracker.h
    M Source/WebCore/page/Chrome.h
    M Source/WebCore/page/ContextMenuController.h
    M Source/WebCore/page/DebugPageOverlays.cpp
    M Source/WebCore/page/DebugPageOverlays.h
    M Source/WebCore/page/DragController.h
    M Source/WebCore/page/ElementTargetingController.h
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/FocusController.h
    M Source/WebCore/page/Frame.h
    M Source/WebCore/page/ImageAnalysisQueue.h
    M Source/WebCore/page/ImageOverlayController.h
    M Source/WebCore/page/OpportunisticTaskScheduler.h
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/Page.h
    M Source/WebCore/page/PageConsoleClient.h
    M Source/WebCore/page/PageGroup.h
    M Source/WebCore/page/PageOverlay.h
    M Source/WebCore/page/PageOverlayController.h
    M Source/WebCore/page/PerformanceMonitor.h
    M Source/WebCore/page/SettingsBase.h
    M Source/WebCore/page/UserContentProvider.h
    M Source/WebCore/page/VisitedLinkStore.h
    M Source/WebCore/page/mac/ServicesOverlayController.h
    M Source/WebCore/page/scrolling/ScrollingCoordinator.h
    M Source/WebCore/page/writing-tools/WritingToolsController.h
    M Source/WebCore/plugins/PluginInfoProvider.h
    M Source/WebCore/testing/InternalSettings.h
    M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h
    M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
    M Source/WebKitLegacy/Storage/WebStorageNamespaceProvider.h
    M Source/WebKitLegacy/WebCoreSupport/PageStorageSessionProvider.h
    M Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.h
    M Source/WebKitLegacy/mac/WebView/WebMediaPlaybackTargetPicker.h

  Log Message:
  -----------
  Crash in EventHandler::internalKeyEvent
https://bugs.webkit.org/show_bug.cgi?id=275717
rdar://122024832

Reviewed by Chris Dumez.

The crash is likely caused by a WeakPtr to Page's getting released in a background thread.
Use thread safe WeakPtr to speculatively fix this issue.

Also deploy smart pointers in WebFrame::handleKeyEvent and added a nullptr check for Page
in EventHandler::stopKeyboardScrolling() as further speculative fixes.

* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.cpp:
(WebCore::MainThreadPermissionObserver::MainThreadPermissionObserver):
* Source/WebCore/Modules/permissions/MainThreadPermissionObserver.h:
* Source/WebCore/Modules/permissions/PermissionController.h:
* Source/WebCore/Modules/permissions/PermissionObserver.h:
* Source/WebCore/Modules/permissions/PermissionStatus.cpp:
(WebCore::PermissionStatus::create):
(WebCore::PermissionStatus::PermissionStatus):
* Source/WebCore/Modules/permissions/PermissionStatus.h:
* Source/WebCore/Scripts/SettingsTemplates/InternalSettingsGenerated.h.erb:
* Source/WebCore/accessibility/atspi/AccessibilityRootAtspi.h:
* Source/WebCore/dom/WindowEventLoop.h:
* Source/WebCore/inspector/InspectorFrontendAPIDispatcher.h:
* Source/WebCore/inspector/InspectorFrontendClientLocal.h:
* Source/WebCore/inspector/InspectorFrontendHost.h:
* Source/WebCore/loader/FrameLoader.cpp:
* Source/WebCore/page/EventHandler.cpp:
(WebCore::EventHandler::stopKeyboardScrolling):
* Source/WebCore/page/Frame.h:
* Source/WebCore/page/ImageAnalysisQueue.h:
* Source/WebCore/page/ImageOverlayController.h:
* Source/WebCore/page/LocalFrame.h:
* Source/WebCore/page/OpportunisticTaskScheduler.h:
* Source/WebCore/page/Page.cpp:
(WebCore::allPages):
* Source/WebCore/page/Page.h:
* Source/WebCore/page/PageGroup.h:
(WebCore::PageGroup::pages const):
* Source/WebCore/page/PageOverlay.h:
* Source/WebCore/page/SettingsBase.h:
* Source/WebCore/page/UserContentProvider.h:
* Source/WebCore/page/VisitedLinkStore.h:
* Source/WebCore/page/scrolling/ScrollingCoordinator.h:
* Source/WebCore/platform/mac/DataDetectorHighlight.h:
* Source/WebCore/plugins/PluginInfoProvider.h:
* Source/WebCore/testing/InternalSettings.h:
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.cpp:
(WebKit::WebPermissionController::query):
* Source/WebKit/WebProcess/WebCoreSupport/WebPermissionController.h:
* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::handleKeyEvent):
* Source/WebKitLegacy/Storage/WebStorageNamespaceProvider.h:
* Source/WebKitLegacy/WebCoreSupport/PageStorageSessionProvider.h:
* Source/WebKitLegacy/mac/WebCoreSupport/WebInspectorClient.h:
* Source/WebKitLegacy/mac/WebView/WebMediaPlaybackTargetPicker.h:

Originally-landed-as: 272448.1090 at safari-7618-branch (b2c2a650b7b7). rdar://132956598
Canonical link: https://commits.webkit.org/282238@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