Bug 249694

Summary: [WinCairo] Assertion fails while ~RemoteImageBufferProxy in DrawingAreaWC CommitQueue
Product: WebKit Reporter: Fujii Hironori <Hironori.Fujii>
Component: WebKit2Assignee: Fujii Hironori <Hironori.Fujii>
Status: RESOLVED FIXED    
Severity: Normal CC: don.olmstead, kkinnunen, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch none

Description Fujii Hironori 2022-12-20 20:14:24 PST
[WinCairo] Assertion fails while ~RemoteImageBufferProxy in DrawingAreaWC CommitQueue

WinCairo WK2 Debug tester bot is reporting an assertion failure for the following tests.

  fast/transforms/interleaved-2d-transforms-with-gpu-process.html [ Crash ]
  webgl/webgl-and-dom-in-gpup.html [ Crash ]

ASSERTION FAILED: !m_impl || !m_shouldEnableAssertions || m_impl->wasConstructedOnMainThread() == isMainThread()
C:\jenkins_slave\wincairo-main\WebKitBuild\Debug\WTF\Headers\wtf/WeakPtr.h(135) : WTF::WeakPtr<class WebKit::RemoteRenderingBackendProxy,class WTF::DefaultWeakPtrImpl>::operator ->
1   00007FFF94DB248B WTFCrash
2   00007FFF6C0B2C1E WTFCrashWithInfo
3   00007FFF6D915BF4 WTF::WeakPtr<WebKit::RemoteRenderingBackendProxy,WTF::DefaultWeakPtrImpl>::operator->
4   00007FFF6D7B1476 WebKit::RemoteImageBufferProxy::~RemoteImageBufferProxy
5   00007FFF6D934A28 WebKit::RemoteImageBufferProxy::`scalar deleting destructor'
6   00007FFF6C0BCE58 `WTF::ThreadSafeRefCounted<WebCore::ImageBuffer,0>::deref'::`2'::<lambda_1>::operator()
7   00007FFF6C0BEC84 WTF::ThreadSafeRefCounted<WebCore::ImageBuffer,0>::deref
8   00007FFF6C0BF063 WTF::DefaultRefDerefTraits<WebCore::ImageBuffer>::derefIfNotNull
9   00007FFF6C0BB63D WTF::RefPtr<WebCore::ImageBuffer,WTF::RawPtrTraits<WebCore::ImageBuffer>,WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> >::~RefPtr<WebCore::ImageBuffer,WTF::RawPtrTraits<WebCore::ImageBuffer>,WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> >
10  00007FFF6C1A4F5D `WebKit::DrawingAreaWC::sendUpdateNonAC'::`2'::<lambda_1>::~<lambda_1>
11  00007FFF6C1A5B9B WTF::Detail::CallableWrapper<`WebKit::DrawingAreaWC::sendUpdateNonAC'::`2'::<lambda_1>,void>::~CallableWrapper<`WebKit::DrawingAreaWC::sendUpdateNonAC'::`2'::<lambda_1>,void>
12  00007FFF6C1A5BD8 WTF::Detail::CallableWrapper<`WebKit::DrawingAreaWC::sendUpdateNonAC'::`2'::<lambda_1>,void>::`scalar deleting destructor'
13  00007FFF94DBED5F std::default_delete<WTF::Detail::CallableWrapperBase<void> >::operator()
14  00007FFF94DBE453 std::unique_ptr<WTF::Detail::CallableWrapperBase<void>,std::default_delete<WTF::Detail::CallableWrapperBase<void> > >::~unique_ptr<WTF::Detail::CallableWrapperBase<void>,std::default_delete<WTF::Detail::CallableWrapperBase<void> > >
15  00007FFF94DBE097 WTF::Function<void __cdecl(void)>::~Function<void __cdecl(void)>
16  00007FFF94F3FEAB `WTF::WorkQueueBase::dispatch'::`2'::<lambda_1>::~<lambda_1>
17  00007FFF94F4054B WTF::Detail::CallableWrapper<`WTF::WorkQueueBase::dispatch'::`2'::<lambda_1>,void>::~CallableWrapper<`WTF::WorkQueueBase::dispatch'::`2'::<lambda_1>,void>
18  00007FFF94F40588 WTF::Detail::CallableWrapper<`WTF::WorkQueueBase::dispatch'::`2'::<lambda_1>,void>::`scalar deleting destructor'
19  00007FFF94DBED5F std::default_delete<WTF::Detail::CallableWrapperBase<void> >::operator()
20  00007FFF94DBE453 std::unique_ptr<WTF::Detail::CallableWrapperBase<void>,std::default_delete<WTF::Detail::CallableWrapperBase<void> > >::~unique_ptr<WTF::Detail::CallableWrapperBase<void>,std::default_delete<WTF::Detail::CallableWrapperBase<void> > >
21  00007FFF94DBE097 WTF::Function<void __cdecl(void)>::~Function<void __cdecl(void)>
22  00007FFF94E61E82 WTF::RunLoop::performWork
23  00007FFF94F4D571 WTF::RunLoop::wndProc
24  00007FFF94F4D4D4 WTF::RunLoop::RunLoopWndProc
25  00007FFFBDEDE858 CallWindowProcW
26  00007FFFBDEDE299 DispatchMessageW
27  00007FFF94F4CA56 WTF::RunLoop::run
28  00007FFF94E61F4D `WTF::RunLoop::create'::`2'::<lambda_1>::operator()
29  00007FFF94E621CB WTF::Detail::CallableWrapper<`WTF::RunLoop::create'::`2'::<lambda_1>,void>::call
30  00007FFF94DCA503 WTF::Function<void __cdecl(void)>::operator()
31  00007FFF94E72488 WTF::Thread::entryPoint
Comment 1 Fujii Hironori 2022-12-20 20:16:20 PST
This isn't reprodusible on my PC. But, adding sleep makes it reprodusible.

diff --git a/Source/WebKit/WebProcess/WebPage/wc/DrawingAreaWC.cpp b/Source/WebKit/WebProcess/WebPage/wc/DrawingAreaWC.cpp
index c2ac3bd9e8bf..f81bbe5de247 100644
--- a/Source/WebKit/WebProcess/WebPage/wc/DrawingAreaWC.cpp
+++ b/Source/WebKit/WebProcess/WebPage/wc/DrawingAreaWC.cpp
@@ -341,6 +341,7 @@ void DrawingAreaWC::sendUpdateNonAC()
             updateInfo.bitmapHandle = std::get<ShareableBitmapHandle>(WTFMove(handle));
             send(Messages::DrawingAreaProxy::Update(stateID, WTFMove(updateInfo)));
         });
+        Sleep(3 * 1000);
     });
 }
Comment 2 Fujii Hironori 2022-12-20 20:30:30 PST
Created attachment 464132 [details]
Patch
Comment 3 Fujii Hironori 2022-12-21 11:41:11 PST
Comment on attachment 464132 [details]
Patch

Thank you for the review.
Comment 4 EWS 2022-12-21 14:00:22 PST
Committed 258214@main (7750f7a4299a): <https://commits.webkit.org/258214@main>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 464132 [details].
Comment 5 Radar WebKit Bug Importer 2022-12-21 14:01:18 PST
<rdar://problem/103612749>