WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
308430
[threaded-animations] deadlock under `RemoteLayerTreeEventDispatcher::scrollingTreeWasRecentlyActive()`
https://bugs.webkit.org/show_bug.cgi?id=308430
Summary
[threaded-animations] deadlock under `RemoteLayerTreeEventDispatcher::scrolli...
Antoine Quint
Reported
2026-02-22 06:28:15 PST
A new test being added for
bug 308429
yields a deadlock if ran over multiple iterations using this command: run-webkit-tests --debug --iterations 1000 webanimations/threaded-animations/accelerated-timeline-preservation-during-update.html ``` Thread 0:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x18cd4b50c __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x18cd8c128 _pthread_psynch_cond_wait + 92 [inlined] 2 libsystem_pthread.dylib 0x18cd8c128 _pthread_cond_wait + 980 3 JavaScriptCore 0x10d81e784 WTF::ThreadCondition::wait(WTF::Mutex&) + 52 4 JavaScriptCore 0x10d8146e8 WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime) + 144 5 JavaScriptCore 0x10d740f00 WTF::ParkingLot::parkConditionallyImpl(void const*, WTF::ScopedLambda<bool ()> const&, WTF::ScopedLambda<void ()> const&, WTF::TimeWithDynamicClockType const&) + 500 6 JavaScriptCore 0x10d98798c WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally<WTF::ParkingLot::ParkResult WTF::ParkingLot::compareAndPark<unsigned char, unsigned char>(WTF::Atomic<unsigned char> const*, unsigned char)::'lambda'(), WTF::ParkingLot::ParkResult WTF::ParkingLot::compareAndPark<unsigned char, unsigned char>(WTF::Atomic<unsigned char> const*, unsigned char)::'lambda0'()>(void const*, unsigned char const&, unsigned char const&, WTF::TimeWithDynamicClockType const&) + 92 7 JavaScriptCore 0x10d987914 WTF::ParkingLot::ParkResult WTF::ParkingLot::compareAndPark<unsigned char, unsigned char>(WTF::Atomic<unsigned char> const*, unsigned char) + 100 8 JavaScriptCore 0x10d734cf4 WTF::LockAlgorithm<unsigned char, (unsigned char)1, (unsigned char)2, WTF::EmptyLockHooks<unsigned char>>::lockSlow(WTF::Atomic<unsigned char>&) + 388 9 JavaScriptCore 0x10d734b5c WTF::Lock::lockSlow() + 48 10 WebKit 0x12cf06b74 WTF::Lock::lock() + 48 (Lock.h:71) 11 WebKit 0x12cf06b20 WTF::Locker<WTF::Lock>::Locker(WTF::Lock&) + 64 (Locker.h:87) 12 WebKit 0x12cf06aa0 WTF::Locker<WTF::Lock>::Locker(WTF::Lock&) + 40 (Locker.h:86) 13 WebKit 0x13004159c WebKit::RemoteLayerTreeEventDispatcher::scrollingTreeWasRecentlyActive() + 196 14 WebKit 0x13004166c WebKit::RemoteLayerTreeEventDispatcher::mainThreadDisplayDidRefresh(unsigned int) + 36 15 WebKit 0x130045a20 WebKit::RemoteScrollingCoordinatorProxyMac::displayDidRefresh(unsigned int) + 44 16 WebKit 0x13003b25c WebKit::RemoteLayerTreeDrawingAreaProxyMac::didRefreshDisplay() + 648 17 WebKit 0x13005ef28 WebKit::RemoteLayerTreeDisplayLinkClient::displayLinkFired(unsigned int, WebCore::DisplayUpdate, bool, bool)::$_0::operator()() const + 236 18 WebKit 0x13005ee00 WTF::Detail::CallableWrapper<WebKit::RemoteLayerTreeDisplayLinkClient::displayLinkFired(unsigned int, WebCore::DisplayUpdate, bool, bool)::$_0, void>::call() + 32 19 JavaScriptCore 0x10d8fdca4 WTF::Function<void ()>::operator()() const + 172 20 JavaScriptCore 0x10d7dd75c WTF::RunLoop::performWork() + 284 21 JavaScriptCore 0x10d7dd62c WTF::RunLoop::performWork(void*) + 40 22 CoreFoundation 0x18ce48b90 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28 23 CoreFoundation 0x18ce48b24 __CFRunLoopDoSource0 + 172 24 CoreFoundation 0x18ce48890 __CFRunLoopDoSources0 + 232 25 CoreFoundation 0x18ce474b4 __CFRunLoopRun + 820 26 CoreFoundation 0x18cf19c8c _CFRunLoopRunSpecificWithOptions + 532 27 Foundation 0x18e690b44 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212 28 WebKitTestRunner 0x1048229d0 WTR::TestController::platformRunUntil(bool&, WTF::Seconds) + 300 (TestControllerCocoa.mm:436) 29 WebKitTestRunner 0x1047c7894 WTR::TestController::runUntil(bool&, WTF::Seconds) + 88 (TestController.cpp:3003) 30 WebKitTestRunner 0x10483b28c WTR::TestInvocation::invoke() + 436 (TestInvocation.cpp:207) 31 WebKitTestRunner 0x1047d7300 WTR::TestController::runTest(char const*) + 576 (TestController.cpp:2933) 32 WebKitTestRunner 0x1047d7a94 WTR::TestController::runTestingServerLoop() + 272 (TestController.cpp:2979) 33 WebKitTestRunner 0x1047c8540 WTR::TestController::run() + 48 (TestController.cpp:2987) 34 WebKitTestRunner 0x1047c7c24 WTR::TestController::TestController(int, char const**) + 888 (TestController.cpp:238) 35 WebKitTestRunner 0x1047c860c WTR::TestController::TestController(int, char const**) + 48 (TestController.cpp:235) 36 WebKitTestRunner 0x10475dc70 main + 128 (main.mm:79) 37 dyld 0x18c9cfda4 start + 6992 ```
Attachments
Add attachment
proposed patch, testcase, etc.
Radar WebKit Bug Importer
Comment 1
2026-02-22 06:28:21 PST
<
rdar://problem/170919668
>
Antoine Quint
Comment 2
2026-02-22 23:01:23 PST
After
308011@main
, which added the flaky crash expectation for this bug, it's necessary to run the test with `--force` as well. This does the trick for me: run-wekit-tests --debug --iterations 1000 webanimations/threaded-animations/accelerated-timeline-preservation-during-update.html --exit-after-n-crashes 1 --force
Matt Woodrow
Comment 3
2026-02-24 17:24:54 PST
Pull request:
https://github.com/WebKit/WebKit/pull/59382
EWS
Comment 4
2026-02-25 15:06:06 PST
Committed
308238@main
(3dc29411a3ca): <
https://commits.webkit.org/308238@main
> Reviewed commits have been landed. Closing PR #59382 and removing active labels.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug