RESOLVED FIXED 267294
[Win] REGRESSION(272822@main): StreamClientConnection.h(216,20): error: call to implicitly-deleted copy constructor of 'StreamClientConnection::SendSyncResult<PrepareForDisplay>'
https://bugs.webkit.org/show_bug.cgi?id=267294
Summary [Win] REGRESSION(272822@main): StreamClientConnection.h(216,20): error: call ...
Fujii Hironori
Reported 2024-01-09 13:20:45 PST
Windows port can't compile after 272822@main. https://build.webkit.org/#/builders/731/builds/12322 FAILED: Source/WebKit/CMakeFiles/WebKit.dir/WebProcess/GPU/graphics/wc/RemoteGraphicsContextGLProxyWC.cpp.obj C:\LLVM\bin\clang-cl.exe /nologo -TP (...) -c -- C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\wc\RemoteGraphicsContextGLProxyWC.cpp In file included from C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\wc\RemoteGraphicsContextGLProxyWC.cpp:27: In file included from C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\RemoteGraphicsContextGLProxy.h:38: C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\Platform\IPC\StreamClientConnection.h(216,20): error: call to implicitly-deleted copy constructor of 'StreamClientConnection::SendSyncResult<PrepareForDisplay>' (aka 'ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>') return WTFMove(*maybeSendResult); ^~~~~~~~~~~~~~~~~~~~~~~~~ C:\BW\WinCairo-64-bit-Release-Build\build\WebKitBuild\Release\WTF\Headers\wtf/StdLibExtras.h(675,24): note: expanded from macro 'WTFMove' #define WTFMove(value) std::move<WTF::CheckMoveParameter>(value) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\RemoteGraphicsContextGLProxy.h(395,36): note: in instantiation of function template specialization 'IPC::StreamClientConnection::sendSync<Messages::RemoteGraphicsContextGL::PrepareForDisplay, WebKit::GraphicsContextGLIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits>' requested here return m_streamConnection->sendSync(std::forward<T>(message), m_graphicsContextGLIdentifier, defaultSendTimeout); ^ C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\wc\RemoteGraphicsContextGLProxyWC.cpp(93,23): note: in instantiation of function template specialization 'WebKit::RemoteGraphicsContextGLProxy::sendSync<Messages::RemoteGraphicsContextGL::PrepareForDisplay>' requested here auto sendResult = sendSync(Messages::RemoteGraphicsContextGL::PrepareForDisplay()); ^ C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\Platform\IPC\Connection.h(158,49): note: copy constructor of 'ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>' is implicitly deleted because field 'value' has a deleted copy constructor Expected<typename T::ReplyArguments, Error> value; ^ C:\BW\WinCairo-64-bit-Release-Build\build\WebKitBuild\Release\WTF\Headers\wtf/Expected.h(437,5): note: explicitly defaulted function was implicitly deleted here expected(const expected&) = default; ^ C:\BW\WinCairo-64-bit-Release-Build\build\WebKitBuild\Release\WTF\Headers\wtf/Expected.h(419,18): note: copy constructor of 'expected<std::tuple<std::optional<WTF::ObjectIdentifierGeneric<WebKit::WCContentBufferIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits>>>, IPC::Error>' is implicitly deleted because base class '__expected_detail::base_select<tuple<optional<ObjectIdentifierGeneric<WCContentBufferIdentifierType, ObjectIdentifierThreadSafeAccessTraits>>>, Error>' (aka 'std::experimental::__expected_detail::constexpr_base<std::tuple<std::optional<WTF::ObjectIdentifierGeneric<WebKit::WCContentBufferIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits>>>, IPC::Error>') has a deleted copy constructor class expected : private __expected_detail::base_select<T, E> { ^ C:\BW\WinCairo-64-bit-Release-Build\build\WebKitBuild\Release\WTF\Headers\wtf/Expected.h(311,47): note: copy constructor of 'constexpr_base<std::tuple<std::optional<WTF::ObjectIdentifierGeneric<WebKit::WCContentBufferIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits>>>, IPC::Error>' is implicitly deleted because field 's' has a deleted copy constructor constexpr_storage<value_type, error_type> s; ^ C:\BW\WinCairo-64-bit-Release-Build\build\WebKitBuild\Release\WTF\Headers\wtf/Expected.h(247,16): note: copy constructor of 'constexpr_storage<std::tuple<std::optional<WTF::ObjectIdentifierGeneric<WebKit::WCContentBufferIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits>>>, IPC::Error>' is implicitly deleted because variant field 'val' has a non-trivial copy constructor value_type val; ^ In file included from C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\wc\RemoteGraphicsContextGLProxyWC.cpp:27: In file included from C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\RemoteGraphicsContextGLProxy.h:38: C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\Platform\IPC\StreamClientConnection.h(241,16): error: no matching constructor for initialization of 'std::optional<StreamClientConnection::SendSyncResult<PrepareForDisplay>>' (aka 'optional<ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>>') return { { Error::CantWaitForSyncReplies } }; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\Platform\IPC\StreamClientConnection.h(214,32): note: in instantiation of function template specialization 'IPC::StreamClientConnection::trySendSyncStream<Messages::RemoteGraphicsContextGL::PrepareForDisplay>' requested here auto maybeSendResult = trySendSyncStream(message, timeout, *span); ^ C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\RemoteGraphicsContextGLProxy.h(395,36): note: in instantiation of function template specialization 'IPC::StreamClientConnection::sendSync<Messages::RemoteGraphicsContextGL::PrepareForDisplay, WebKit::GraphicsContextGLIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits>' requested here return m_streamConnection->sendSync(std::forward<T>(message), m_graphicsContextGLIdentifier, defaultSendTimeout); ^ C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\wc\RemoteGraphicsContextGLProxyWC.cpp(93,23): note: in instantiation of function template specialization 'WebKit::RemoteGraphicsContextGLProxy::sendSync<Messages::RemoteGraphicsContextGL::PrepareForDisplay>' requested here auto sendResult = sendSync(Messages::RemoteGraphicsContextGL::PrepareForDisplay()); ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(214,7): note: candidate constructor (the implicit copy constructor) not viable: cannot convert initializer list argument to 'const optional<ConnectionSendSyncResult<PrepareForDisplay>>' class optional : private _SMF_control<_Optional_construct_base<_Ty>, _Ty> { ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(227,15): note: candidate constructor not viable: cannot convert initializer list argument to 'nullopt_t' constexpr optional(nullopt_t) noexcept {} ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(262,64): note: candidate template ignored: couldn't infer template argument '_Ty2' _CONSTEXPR20 explicit(!is_convertible_v<const _Ty2&, _Ty>) optional(const optional<_Ty2>& _Right) noexcept( ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(271,9): note: candidate template ignored: couldn't infer template argument '_Ty2' optional(optional<_Ty2>&& _Right) noexcept(is_nothrow_constructible_v<_Ty, _Ty2>) /* strengthened */ { ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(230,24): note: candidate template ignored: requirement 'is_constructible_v<IPC::ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>>' was not satisfied [with _Types = <>] constexpr explicit optional(in_place_t, _Types&&... _Args) noexcept( ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(248,9): note: candidate template ignored: requirement 'integral_constant<bool, false>::value' was not satisfied [with _Ty2 = IPC::ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>] optional(_Ty2&& _Right) noexcept(is_nothrow_constructible_v<_Ty, _Ty2>) // strengthened ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(226,15): note: candidate constructor not viable: requires 0 arguments, but 1 was provided constexpr optional() noexcept {} ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(236,24): note: candidate constructor template not viable: requires at least 2 arguments, but 1 was provided constexpr explicit optional(in_place_t, initializer_list<_Elem> _Ilist, _Types&&... _Args) noexcept( ^ In file included from C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\wc\RemoteGraphicsContextGLProxyWC.cpp:27: In file included from C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\WebProcess\GPU\graphics\RemoteGraphicsContextGLProxy.h:38: C:\BW\WinCairo-64-bit-Release-Build\build\Source\WebKit\Platform\IPC\StreamClientConnection.h(275,20): error: no matching constructor for initialization of 'std::optional<StreamClientConnection::SendSyncResult<PrepareForDisplay>>' (aka 'optional<ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>>') return { { WTFMove(*replyArguments) } }; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(214,7): note: candidate constructor (the implicit copy constructor) not viable: cannot convert initializer list argument to 'const optional<ConnectionSendSyncResult<PrepareForDisplay>>' class optional : private _SMF_control<_Optional_construct_base<_Ty>, _Ty> { ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(227,15): note: candidate constructor not viable: cannot convert initializer list argument to 'nullopt_t' constexpr optional(nullopt_t) noexcept {} ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(262,64): note: candidate template ignored: couldn't infer template argument '_Ty2' _CONSTEXPR20 explicit(!is_convertible_v<const _Ty2&, _Ty>) optional(const optional<_Ty2>& _Right) noexcept( ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(271,9): note: candidate template ignored: couldn't infer template argument '_Ty2' optional(optional<_Ty2>&& _Right) noexcept(is_nothrow_constructible_v<_Ty, _Ty2>) /* strengthened */ { ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(230,24): note: candidate template ignored: requirement 'is_constructible_v<IPC::ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>>' was not satisfied [with _Types = <>] constexpr explicit optional(in_place_t, _Types&&... _Args) noexcept( ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(248,9): note: candidate template ignored: requirement 'integral_constant<bool, false>::value' was not satisfied [with _Ty2 = IPC::ConnectionSendSyncResult<Messages::RemoteGraphicsContextGL::PrepareForDisplay>] optional(_Ty2&& _Right) noexcept(is_nothrow_constructible_v<_Ty, _Ty2>) // strengthened ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(226,15): note: candidate constructor not viable: requires 0 arguments, but 1 was provided constexpr optional() noexcept {} ^ C:\MSVS\VC\Tools\MSVC\14.37.32822\include\optional(236,24): note: candidate constructor template not viable: requires at least 2 arguments, but 1 was provided constexpr explicit optional(in_place_t, initializer_list<_Elem> _Ilist, _Types&&... _Args) noexcept( ^ 3 errors generated.
Attachments
WIP patch (758 bytes, patch)
2024-01-09 13:24 PST, Fujii Hironori
no flags
Fujii Hironori
Comment 1 2024-01-09 13:24:12 PST
Created attachment 469349 [details] WIP patch
Fujii Hironori
Comment 2 2024-01-09 17:02:17 PST
ReplyArguments of PrepareForDisplay message is std::optional<WebKit::WCContentBufferIdentifier> for Windows port. That is trivially destructible only for Windows port. https://github.com/WebKit/WebKit/blob/97aa00cffac9285a2a794e0dedbf54e5b8ba30a9/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in#L29-L37 If T and E of Expected are trivially destructible, Expected chooses constexpr_base. https://github.com/WebKit/WebKit/blob/97aa00cffac9285a2a794e0dedbf54e5b8ba30a9/Source/WTF/wtf/Expected.h#L410-L411 constexpr_base isn't move constructible. https://github.com/WebKit/WebKit/blob/97aa00cffac9285a2a794e0dedbf54e5b8ba30a9/Source/WTF/wtf/Expected.h#L363
Fujii Hironori
Comment 3 2024-01-09 17:23:51 PST
Radar WebKit Bug Importer
Comment 4 2024-01-09 17:57:25 PST
EWS
Comment 5 2024-01-09 22:23:48 PST
Committed 272842@main (3505bb0973f9): <https://commits.webkit.org/272842@main> Reviewed commits have been landed. Closing PR #22561 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.