Bug 222104 - RemoteRenderingBackend::wakeUpAndApplyDisplayList called with pending display list
Summary: RemoteRenderingBackend::wakeUpAndApplyDisplayList called with pending display...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Canvas (show other bugs)
Version: Other
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-02-18 05:53 PST by Kimmo Kinnunen
Modified: 2021-02-25 05:54 PST (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kimmo Kinnunen 2021-02-18 05:53:18 PST
RemoteRenderingBackend::wakeUpAndApplyDisplayList called with pending display list

This should not happen, as it means the pending list is lost.


@@ -272,11 +274,13 @@ void RemoteRenderingBackend::wakeUpAndApplyDisplayList(const GPUProcessWakeupMes
 
     auto initialHandle = m_sharedDisplayListHandles.get(arguments.itemBufferIdentifier);
     MESSAGE_CHECK(initialHandle, "Missing initial shared display list handle");
 
     destinationImageBuffer = nextDestinationImageBufferAfterApplyingDisplayLists(*destinationImageBuffer, arguments.offset, *initialHandle, arguments.reason);
     if (!destinationImageBuffer)
         return;
-
+    ASSERT(!m_pendingWakeupInfo);

[1/8] fast/canvas/canvas-composite-text-alpha.html failed unexpectedly (GPUProcess crashed [pid=66757])
[2/8] fast/canvas/canvas-composite-alpha.html failed unexpectedly (GPUProcess crashed [pid=66765])
[3/8] fast/canvas/canvas-context-save-limit.html failed unexpectedly (GPUProcess crashed [pid=66785])
[4/8] fast/canvas/canvas-putImageData.html failed unexpectedly (GPUProcess crashed [pid=66789])
[5/8] fast/canvas/canvas-composite-stroke-alpha.html failed unexpectedly (GPUProcess crashed [pid=66806])
[6/8] fast/canvas/canvas-composite-image.html failed unexpectedly (GPUProcess crashed [pid=66814])
[8/8] fast/canvas/canvas-composite-canvas.html failed unexpectedly (GPUProcess crashed [pid=66832])




Thread 3 Crashed:: Dispatch queue: RemoteRenderingBackend work queue
0   com.apple.JavaScriptCore      	0x000000013fa4f04e WTFCrash + 14 (Assertions.cpp:295)
1   com.apple.WebKit              	0x000000010e5df46b WTFCrashWithInfo(int, char const*, char const*, int) + 27 (Assertions.h:671)
2   com.apple.WebKit              	0x000000010f0478c3 WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList(WebKit::GPUProcessWakeupMessageArguments const&) + 1123 (RemoteRenderingBackend.cpp:282)
3   com.apple.WebKit              	0x000000010f00cfa0 void IPC::callMemberFunctionImpl<WebKit::RemoteRenderingBackend, void (WebKit::RemoteRenderingBackend::*)(WebKit::GPUProcessWakeupMessageArguments const&), std::__1::tuple<WebKit::GPUProcessWakeupMessageArguments>, 0ul>(WebKit::RemoteRenderingBackend*, void (WebKit::RemoteRenderingBackend::*)(WebKit::GPUProcessWakeupMessageArguments const&), std::__1::tuple<WebKit::GPUProcessWakeupMessageArguments>&&, std::__1::integer_sequence<unsigned long, 0ul>) + 160 (HandleMessage.h:42)
4   com.apple.WebKit              	0x000000010f00c5b0 void IPC::callMemberFunction<WebKit::RemoteRenderingBackend, void (WebKit::RemoteRenderingBackend::*)(WebKit::GPUProcessWakeupMessageArguments const&), std::__1::tuple<WebKit::GPUProcessWakeupMessageArguments>, std::__1::integer_sequence<unsigned long, 0ul> >(std::__1::tuple<WebKit::GPUProcessWakeupMessageArguments>&&, WebKit::RemoteRenderingBackend*, void (WebKit::RemoteRenderingBackend::*)(WebKit::GPUProcessWakeupMessageArguments const&)) + 112 (HandleMessage.h:48)
5   com.apple.WebKit              	0x000000010eff05a6 void IPC::handleMessage<Messages::RemoteRenderingBackend::WakeUpAndApplyDisplayList, WebKit::RemoteRenderingBackend, void (WebKit::RemoteRenderingBackend::*)(WebKit::GPUProcessWakeupMessageArguments const&)>(IPC::Decoder&, WebKit::RemoteRenderingBackend*, void (WebKit::RemoteRenderingBackend::*)(WebKit::GPUProcessWakeupMessageArguments const&)) + 150 (HandleMessage.h:120)
6   com.apple.WebKit              	0x000000010eff01da WebKit::RemoteRenderingBackend::didReceiveMessage(IPC::Connection&, IPC::Decoder&) + 218 (RemoteRenderingBackendMessageReceiver.cpp:94)
7   com.apple.WebKit              	0x000000010e658892 IPC::Connection::dispatchMessageReceiverMessage(IPC::MessageReceiver&, std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >&&) + 98 (Connection.cpp:362)
8   com.apple.WebKit              	0x000000010e6613ba IPC::WorkQueueMessageReceiverQueue::enqueueMessage(IPC::Connection&, std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >&&)::'lambda'()::operator()() + 90 (MessageReceiveQueues.h:86)
9   com.apple.WebKit              	0x000000010e6610ae WTF::Detail::CallableWrapper<IPC::WorkQueueMessageReceiverQueue::enqueueMessage(IPC::Connection&, std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >&&)::'lambda'(), void>::call() + 30 (Function.h:52)
10  com.apple.JavaScriptCore      	0x000000013fa77732 WTF::Function<void ()>::operator()() const + 130 (Function.h:83)
11  com.apple.JavaScriptCore      	0x000000013fb809de WTF::WorkQueue::dispatch(WTF::Function<void ()>&&)::$_0::operator()() const + 30 (WorkQueueCocoa.cpp:37)
12  com.apple.JavaScriptCore      	0x000000013fb80be2 WTF::BlockPtr<void ()> WTF::BlockPtr<void ()>::fromCallable<WTF::WorkQueue::dispatch(WTF::Function<void ()>&&)::$_0>(WTF::WorkQueue::dispatch(WTF::Function<void ()>&&)::$_0)::'lambda'(void*)::operator()(void*) const + 34 (BlockPtr.h:111)
13  com.apple.JavaScriptCore      	0x000000013fb80bb5 WTF::BlockPtr<void ()> WTF::BlockPtr<void ()>::fromCallable<WTF::WorkQueue::dispatch(WTF::Function<void ()>&&)::$_0>(WTF::WorkQueue::dispatch(WTF::Function<void ()>&&)::$_0)::'lambda'(void*)::__invoke(void*) + 21 (BlockPtr.h:110)
14  libdispatch.dylib             	0x00007fff2026d5dd _dispatch_call_block_and_release + 12
15  libdispatch.dylib             	0x00007fff2026e7c7 _dispatch_client_callout + 8
16  libdispatch.dylib             	0x00007fff202745fe _dispatch_lane_serial_drain + 606
17  libdispatch.dylib             	0x00007fff202750cb _dispatch_lane_invoke + 375
18  libdispatch.dylib             	0x00007fff2027ec5d _dispatch_workloop_worker_thread + 819
19  libsystem_pthread.dylib       	0x00007fff20416499 _pthread_wqthread + 314
20  libsystem_pthread.dylib       	0x00007fff20415467 start_wqthread + 15
Comment 1 Wenson Hsieh 2021-02-18 12:38:16 PST
I'm a bit confused about this bug. Is there a reason we would expect m_pendingWakeupInfo to always be missing after the initial `nextDestinationImageBufferAfterApplyingDisplayLists`?
Comment 2 Radar WebKit Bug Importer 2021-02-25 05:54:11 PST
<rdar://problem/74741555>