Bug 308430
| Summary: | [threaded-animations] deadlock under `RemoteLayerTreeEventDispatcher::scrollingTreeWasRecentlyActive()` | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Antoine Quint <graouts> |
| Component: | Animations | Assignee: | Matt Woodrow <mattwoodrow> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | graouts, mattwoodrow, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=308429 | ||
Antoine Quint
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
<rdar://problem/170919668>
Antoine Quint
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
Pull request: https://github.com/WebKit/WebKit/pull/59382
EWS
Committed 308238@main (3dc29411a3ca): <https://commits.webkit.org/308238@main>
Reviewed commits have been landed. Closing PR #59382 and removing active labels.