[webkit-changes] [WebKit/WebKit] 9cdd3b: AX: With ITM enabled, reloading the page causes a ...

Tyler Wilcock noreply at github.com
Tue Jan 10 10:40:56 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9cdd3b498e3e9cebc163b363f5f7c6d2354e5ce3
      https://github.com/WebKit/WebKit/commit/9cdd3b498e3e9cebc163b363f5f7c6d2354e5ce3
  Author: Tyler Wilcock <tyler_w at apple.com>
  Date:   2023-01-10 (Tue, 10 Jan 2023)

  Changed paths:
    A LayoutTests/accessibility/page-reload-deadlock-expected.txt
    A LayoutTests/accessibility/page-reload-deadlock.html
    A LayoutTests/platform/glib/accessibility/page-reload-deadlock-expected.txt
    M LayoutTests/platform/ios/TestExpectations
    A LayoutTests/platform/ios/accessibility/page-reload-deadlock-expected.txt
    M LayoutTests/platform/mac-wk1/TestExpectations
    M LayoutTests/platform/win/TestExpectations
    M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp

  Log Message:
  -----------
  AX: With ITM enabled, reloading the page causes a deadlock
https://bugs.webkit.org/show_bug.cgi?id=250346
rdar://104018097

Reviewed by Chris Fleizach and Andres Gonzalez.

This was caused by:

https://bugs.webkit.org/show_bug.cgi?id=249480 (AX: Add AXID identification to both AXObjectCache and AXIsolatedTree so that instances of these classes can be retrieved by ID.)

The bug is that when `AXIsolatedTree::m_queuedForDestruction` is true, `AXIsolatedTree::applyPendingChanges`
takes `s_storeLock` and then calls `AXIsolatedTree::remove(treeID())`, which also takes `s_storeLock`, causing
a re-entrant deadlock on the secondary AX thread.

This patch fixes this by removing the acquisition of `s_storeLock` in `AXIsolatedTree::applyPendingChanges`
as it was unnecessary.

* LayoutTests/accessibility/page-reload-deadlock-expected.txt: Added.
* LayoutTests/accessibility/page-reload-deadlock.html: Added.
* LayoutTests/platform/ios/TestExpectations: Enable new test.
* LayoutTests/platform/mac-wk1/TestExpectations: Skip new test.
* LayoutTests/platform/win/TestExpectations: Skip new test.
* LayoutTests/platform/glib/accessibility/page-reload-deadlock-expected.txt: Added.
* LayoutTests/platform/ios/accessibility/page-reload-deadlock-expected.txt: Added.
* Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::applyPendingChanges):

Canonical link: https://commits.webkit.org/258735@main




More information about the webkit-changes mailing list