Bug 264438

Summary: [Win] ~CompletionHandler's assertion "Completion handler should always be called" fails under RemoteWCLayerTreeHost::update
Product: WebKit Reporter: Fujii Hironori <Hironori.Fujii>
Component: PlatformAssignee: Fujii Hironori <Hironori.Fujii>
Status: RESOLVED FIXED    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Fujii Hironori 2023-11-08 14:21:28 PST
Running layout tests with Windows Debug randomly reports an assertion failure in GPU process.

https://build.webkit.org/results/WinCairo-64-bit-Debug-Tests/270384@main%20(21283)/animations/spring-function-stderr.txt

2   00007FF8F92E9510 WTF::CompletionHandler<void (std::optional<WebKit::UpdateInfo>)>::~CompletionHandler
3   00007FF8F92E40AF WebKit::RemoteWCLayerTreeHost::update::<lambda_2>::operator()::<lambda_1>::~(lambda at C:\BW\WinCairo-64-bit-Debug-Build\build\Source\WebKit\GPUProcess\graphics\wc\RemoteWCLayerTreeHost.cpp:103:34)
4   00007FF8F92E4396 WTF::Detail::CallableWrapper<`lambda at C:\BW\WinCairo-64-bit-Debug-Build\build\Source\WebKit\GPUProcess\graphics\wc\RemoteWCLayerTreeHost.cpp:103:34',void>::~CallableWrapper
5   00007FF8F92E4329 WTF::Detail::CallableWrapper<`lambda at C:\BW\WinCairo-64-bit-Debug-Build\build\Source\WebKit\GPUProcess\graphics\wc\RemoteWCLayerTreeHost.cpp:103:34',void>::~CallableWrapper
6   00007FF9078CD651 std::default_delete<WTF::Detail::CallableWrapperBase<void> >::operator()
7   00007FF9078CD607 std::unique_ptr<WTF::Detail::CallableWrapperBase<void>,std::default_delete<WTF::Detail::CallableWrapperBase<void> > >::~unique_ptr
8   00007FF9078CC2E3 WTF::Function<void ()>::~Function
9   00007FF90795AC84 WTF::RunLoop::performWork
10  00007FF907A2F1A0 WTF::RunLoop::wndProc
11  00007FF907A2F0D7 WTF::RunLoop::RunLoopWndProc
12  00007FF8FBE60089 CallWindowProcW
13  00007FF8FBE5FA02 DispatchMessageW
14  00007FF907A2F36D WTF::RunLoop::run
15  00007FF8F9305423 WebKit::AuxiliaryProcessMainBase<WebKit::GPUProcess,0>::run
16  00007FF8F93052D7 WebKit::AuxiliaryProcessMain<WebKit::GPUProcessMainWin>
17  00007FF8F93051B3 WebKit::GPUProcessMain
18  00007FF7205C124C main
19  00007FF7205C18BC __scrt_common_main_seh
20  00007FF900C54DE0 BaseThreadInitThunk
21  00007FF91541EC4B RtlUserThreadStart
ERROR: 0000028A1D7985E0 - GPUProcessProxy::didClose:
C:\BW\WinCairo-64-bit-Debug-Build\build\Source\WebKit\UIProcess/GPU/GPUProcessProxy.cpp(517) : didClose
ERROR: 0000028A1D7985E0 - GPUProcessProxy::gpuProcessExited: reason=Crash
C:\BW\WinCairo-64-bit-Debug-Build\build\Source\WebKit\UIProcess/GPU/GPUProcessProxy.cpp(481) : gpuProcessExited
GPUProcess terminated (pid 14252) for reason: crash
Comment 1 Fujii Hironori 2023-11-09 11:51:22 PST
https://build.webkit.org/results/WinCairo-64-bit-Debug-Tests/270419@main%20(21286)/animations/resume-after-page-cache-crash-log.txt

ASSERTION FAILED: Completion handler should always be called
!m_function
C:\BW\WinCairo-64-bit-Debug-Build\build\WebKitBuild\Debug\WTF\Headers\wtf/CompletionHandler.h(65) : ~CompletionHandler
1   00007FF9078C1B99 WTFCrash
2   00007FF8F92E9510 WTF::CompletionHandler<void (std::optional<WebKit::UpdateInfo>)>::~CompletionHandler
3   00007FF8F92E40AF WebKit::RemoteWCLayerTreeHost::update::<lambda_2>::operator()::<lambda_1>::~(lambda at C:\BW\WinCairo-64-bit-Debug-Build\build\Source\WebKit\GPUProcess\graphics\wc\RemoteWCLayerTreeHost.cpp:103:34)
(...)
Comment 2 Fujii Hironori 2023-11-09 13:30:21 PST
It's reproducible on my PC.

> python .\Tools\Scripts\run-webkit-tests --debug --iter=100 -f --no-retry --no-show compositing/shared-backing/backing-sharing-compositing-change.html compositing/shared-backing/move-sharing-child.html
or
> python .\Tools\Scripts\run-webkit-tests --debug --iter=10 -f --no-retry --no-show compositing/shared-backing
Comment 3 Fujii Hironori 2023-11-09 22:38:28 PST
Pull request: https://github.com/WebKit/WebKit/pull/20290
Comment 4 EWS 2023-11-10 14:59:44 PST
Committed 270571@main (a7d29235f1b0): <https://commits.webkit.org/270571@main>

Reviewed commits have been landed. Closing PR #20290 and removing active labels.
Comment 5 Radar WebKit Bug Importer 2023-11-10 15:00:16 PST
<rdar://problem/118253244>