RESOLVED FIXED 274765
[Win][clang-cl] Enabling HAVE_INT128_T generates unaligned movaps instructions
https://bugs.webkit.org/show_bug.cgi?id=274765
Summary [Win][clang-cl] Enabling HAVE_INT128_T generates unaligned movaps instructions
Fujii Hironori
Reported 2024-05-27 21:16:07 PDT
If I enable HAVE_INT128_T for 279362@main Windows port Debug build, MiniBrowser crashes immediately. Exception thrown at 0x00007FFC5AD9E639 (WebCore.dll) in WebKitWebProcess.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF. Callstack: > WebCore.dll!WTF::operator==(const WTF::UUID &, const WTF::UUID &) Line 95 C++ > WebCore.dll!WebCore::operator==(const WebCore::ProcessQualified<WTF::UUID> &, const WebCore::ProcessQualified<WTF::UUID> &) Line 63 C++ > WebCore.dll!WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>::equal(const WebCore::ProcessQualified<WTF::UUID> & a, const WebCore::ProcessQualified<WTF::UUID> & b) Line 127 C++ > WebCore.dll!WTF::IdentityHashTranslator<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>>::equal<WebCore::ProcessQualified<WTF::UUID>,WebCore::ProcessQualified<WTF::UUID>>(const WebCore::ProcessQualified<WTF::UUID> & a, const WebCore::ProcessQualified<WTF::UUID> & b) Line 301 C++ > WebCore.dll!WTF::HashMapTranslatorAdapter<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::IdentityHashTranslator<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>>>::equal<WebCore::ProcessQualified<WTF::UUID>,WebCore::ProcessQualified<WTF::UUID>>(const WebCore::ProcessQualified<WTF::UUID> & a, const WebCore::ProcessQualified<WTF::UUID> & b) Line 264 C++ > WebCore.dll!WTF::HashTable<WebCore::ProcessQualified<WTF::UUID>,WTF::KeyValuePair<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>>::checkKey<WTF::HashMapTranslatorAdapter<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::IdentityHashTranslator<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>>>,WebCore::ProcessQualified<WTF::UUID>>(const WebCore::ProcessQualified<WTF::UUID> & key) Line 649 C++ > WebCore.dll!WTF::HashTable<WebCore::ProcessQualified<WTF::UUID>,WTF::KeyValuePair<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>>::inlineLookup<WTF::HashMapTranslatorAdapter<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::IdentityHashTranslator<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>>>,WebCore::ProcessQualified<WTF::UUID>>(const WebCore::ProcessQualified<WTF::UUID> & key) Line 671 C++ > WebCore.dll!WTF::HashTable<WebCore::ProcessQualified<WTF::UUID>,WTF::KeyValuePair<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>>::lookup<WTF::HashMapTranslatorAdapter<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::IdentityHashTranslator<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>>>,WebCore::ProcessQualified<WTF::UUID>>(const WebCore::ProcessQualified<WTF::UUID> & key) Line 663 C++ > WebCore.dll!WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::get<WTF::IdentityHashTranslator<WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::KeyValuePairTraits,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>>,WebCore::ProcessQualified<WTF::UUID>>(const WebCore::ProcessQualified<WTF::UUID> & value) Line 373 C++ > WebCore.dll!WTF::HashMap<WebCore::ProcessQualified<WTF::UUID>,WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>,WTF::DefaultHash<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WebCore::ProcessQualified<WTF::UUID>>,WTF::HashTraits<WTF::WeakRef<WebCore::Document,WebCore::WeakPtrImplWithEventTargetData>>,WTF::HashTableTraits>::get(const WebCore::ProcessQualified<WTF::UUID> & key) Line 506 C++ > WebCore.dll!WebCore::DocumentLoader::willSendRequest(WebCore::ResourceRequest && newRequest, const WebCore::ResourceResponse & redirectResponse, WTF::CompletionHandler<void (WebCore::ResourceRequest &&)> && completionHandler) Line 665 C++ > WebCore.dll!WebCore::DocumentLoader::startLoadingMainResource() Line 2147 C++ > WebCore.dll!WebCore::FrameLoader::continueLoadAfterNavigationPolicy::<lambda_12>::operator()() Line 3953 C++ > WebCore.dll!WTF::Detail::CallableWrapper<`lambda at C:\webkit\wc\Source\WebCore\loader\FrameLoader.cpp:3930:51',void>::call() Line 53 C++ > WebCore.dll!WTF::Function<void ()>::operator()() Line 82 C++ > WebCore.dll!WTF::CompletionHandler<void ()>::operator()() Line 78 C++ > WebCore.dll!WebCore::FrameLoader::continueLoadAfterNavigationPolicy(const WebCore::ResourceRequest & request, WebCore::FormState * formState, WebCore::NavigationPolicyDecision navigationPolicyDecision, WebCore::AllowNavigationToInvalidURL allowNavigationToInvalidURL) Line 3957 C++ > WebCore.dll!WebCore::FrameLoader::loadWithDocumentLoader::<lambda_8>::operator()(const WebCore::ResourceRequest & request, WTF::WeakPtr<WebCore::FormState,WTF::DefaultWeakPtrImpl,WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>> && weakFormState, WebCore::NavigationPolicyDecision navigationPolicyDecision) Line 1811 C++ > WebCore.dll!WTF::Detail::CallableWrapper<`lambda at C:\webkit\wc\Source\WebCore\loader\FrameLoader.cpp:1810:152',void,WebCore::ResourceRequest &&,WTF::WeakPtr<WebCore::FormState,WTF::DefaultWeakPtrImpl,WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>> &&,WebCore::NavigationPolicyDecision>::call(WebCore::ResourceRequest && in, WTF::WeakPtr<WebCore::FormState,WTF::DefaultWeakPtrImpl,WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>> && in, WebCore::NavigationPolicyDecision in) Line 53 C++ > WebCore.dll!WTF::Function<void (WebCore::ResourceRequest &&, WTF::WeakPtr<WebCore::FormState,WTF::DefaultWeakPtrImpl,WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>> &&, WebCore::NavigationPolicyDecision)>::operator()(WebCore::ResourceRequest && in, WTF::WeakPtr<WebCore::FormState,WTF::DefaultWeakPtrImpl,WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>> && in, WebCore::NavigationPolicyDecision in) Line 82 C++ > WebCore.dll!WTF::CompletionHandler<void (WebCore::ResourceRequest &&, WTF::WeakPtr<WebCore::FormState,WTF::DefaultWeakPtrImpl,WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>> &&, WebCore::NavigationPolicyDecision)>::operator()(WebCore::ResourceRequest && in, WTF::WeakPtr<WebCore::FormState,WTF::DefaultWeakPtrImpl,WTF::RawPtrTraits<WTF::DefaultWeakPtrImpl>> && in, WebCore::NavigationPolicyDecision in) Line 78 C++ > WebCore.dll!WebCore::PolicyChecker::checkNavigationPolicy::<lambda_0>::operator()(WebCore::PolicyAction policyAction) Line 262 C++ > WebCore.dll!WTF::Detail::CallableWrapper<`lambda at C:\webkit\wc\Source\WebCore\loader\PolicyChecker.cpp:219:43',void,WebCore::PolicyAction>::call(WebCore::PolicyAction in) Line 53 C++ > WebKit2.dll!WTF::Function<void (WebCore::PolicyAction)>::operator()(WebCore::PolicyAction in) Line 82 C++ > WebKit2.dll!WTF::CompletionHandler<void (WebCore::PolicyAction)>::operator()(WebCore::PolicyAction in) Line 78 C++ > WebKit2.dll!WebKit::WebFrame::didReceivePolicyDecision(unsigned __int64 listenerID, WebKit::PolicyDecision && policyDecision) Line 576 C++ > WebKit2.dll!WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction::<lambda_15>::operator()(WebKit::PolicyDecision && policyDecision) Line 201 C++ > [External Code] > WebKit2.dll!IPC::Connection::callReply<Messages::WebPageProxy::DecidePolicyForNavigationActionAsync,`lambda at C:\webkit\wc\Source\WebKit\WebProcess\WebCoreSupport\WebFrameLoaderClient.cpp:194:118'>(IPC::Decoder & decoder, WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction::<lambda_15> && completionHandler) Line 868 C++ > WebKit2.dll!IPC::Connection::makeAsyncReplyCompletionHandler<Messages::WebPageProxy::DecidePolicyForNavigationActionAsync,`lambda at C:\webkit\wc\Source\WebKit\WebProcess\WebCoreSupport\WebFrameLoaderClient.cpp:194:118'>::<lambda_1>::operator()(IPC::Decoder * decoder) Line 796 C++ > WebKit2.dll!WTF::Detail::CallableWrapper<`lambda at C:\webkit\wc\Source\WebKit\Platform\IPC\Connection.h:794:9',void,IPC::Decoder *>::call(IPC::Decoder * in) Line 53 C++ > WebKit2.dll!WTF::Function<void (IPC::Decoder *)>::operator()(IPC::Decoder * in) Line 82 C++ > WebKit2.dll!WTF::CompletionHandler<void (IPC::Decoder *)>::operator()(IPC::Decoder * in) Line 78 C++ > WebKit2.dll!IPC::Connection::dispatchMessage(IPC::Decoder & decoder) Line 1312 C++ > WebKit2.dll!IPC::Connection::dispatchMessage(WTF::UniqueRef<IPC::Decoder> message) Line 1380 C++ > WebKit2.dll!IPC::Connection::dispatchOneIncomingMessage() Line 1444 C++ > WebKit2.dll!IPC::Connection::enqueueIncomingMessage::<lambda_6>::operator()() Line 1293 C++ > WebKit2.dll!WTF::Detail::CallableWrapper<`lambda at C:\webkit\wc\Source\WebKit\Platform\IPC\Connection.cpp:1291:31',void>::call() Line 53 C++ > WTF.dll!WTF::Function<void ()>::operator()() Line 82 C++ > WTF.dll!WTF::RunLoop::performWork() Line 148 C++ > WTF.dll!WTF::RunLoop::wndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 57 C++ > WTF.dll!WTF::RunLoop::RunLoopWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 39 C++ > [External Code] > WTF.dll!WTF::RunLoop::run() Line 69 C++ > WebKit2.dll!WebKit::AuxiliaryProcessMainBase<WebKit::WebProcess,1>::run(int argc, char * * argv) Line 72 C++ > WebKit2.dll!WebKit::AuxiliaryProcessMain<WebKit::WebProcessMainWin>(int argc, char * * argv) Line 98 C++ > WebKit2.dll!WebKit::WebProcessMain(int argc, char * * argv) Line 57 C++ > WebKitWebProcess.exe!main(int argc, char * * argv) Line 35 C++ > [External Code] Disassembly: friend bool operator==(const UUID&, const UUID&) = default; 00007FFC5AD9E620 sub rsp,10h 00007FFC5AD9E624 mov qword ptr [rsp+8],rdx 00007FFC5AD9E629 mov qword ptr [rsp],rcx 00007FFC5AD9E62D mov rax,qword ptr [rsp] 00007FFC5AD9E631 movaps xmm0,xmmword ptr [rax] 00007FFC5AD9E634 mov rax,qword ptr [rsp+8] 00007FFC5AD9E639 movaps xmm1,xmmword ptr [rax] ★ 00007FFC5AD9E63C pcmpeqb xmm0,xmm1 00007FFC5AD9E640 pmovmskb eax,xmm0 00007FFC5AD9E644 sub eax,0FFFFh 00007FFC5AD9E649 sete al 00007FFC5AD9E64C and al,1 00007FFC5AD9E64E movzx eax,al 00007FFC5AD9E651 add rsp,10h 00007FFC5AD9E655 ret Registers: RAX = 00000065F274E098 RBX = 0000000000000000 RCX = 00000065F274DA90 RDX = 00000065F274E098 RSI = 0000000080000022 RDI = 0000000000000001 R8  = 000000000000004C R9  = 0000000000000060 R10 = 00007FFD07C30000 R11 = 00007FFD07C41393 R12 = 0000000000000000 R13 = 0000000000000000 R14 = 0000000000000401 R15 = 0000000000000000 RIP = 00007FFC5AD9E639 RSP = 00000065F274D928 RBP = 0000000000000000 EFL = 00010204
Attachments
Fujii Hironori
Comment 1 2024-05-27 21:17:58 PDT
diff --git a/Source/cmake/OptionsMSVC.cmake b/Source/cmake/OptionsMSVC.cmake index cef79d47609b..b192c69bbe7d 100644 --- a/Source/cmake/OptionsMSVC.cmake +++ b/Source/cmake/OptionsMSVC.cmake @@ -198,10 +198,6 @@ if (COMPILER_IS_CLANG_CL) find_library(CLANG_BUILTINS_LIBRARY clang_rt.builtins-x86_64 PATHS ${CLANG_CL_DIR} REQUIRED NO_DEFAULT_PATH) string(APPEND CMAKE_SHARED_LINKER_FLAGS " \"${CLANG_BUILTINS_LIBRARY}\"") string(APPEND CMAKE_EXE_LINKER_FLAGS " \"${CLANG_BUILTINS_LIBRARY}\"") - - # FIXME: remove these lines after fixing UUID serialization - set(HAVE_INT128_T OFF) - list(REMOVE_ITEM _WEBKIT_CONFIG_FILE_VARIABLES HAVE_INT128_T) endif () # Enable the new lambda processor for better C++ conformance
Fujii Hironori
Comment 2 2024-05-27 21:18:45 PDT
clang-cl emits movaps with incorrectly-aligned argument when compiling with optimizations · Issue #55844 · llvm/llvm-project https://github.com/llvm/llvm-project/issues/55844
Fujii Hironori
Comment 3 2024-05-28 00:31:24 PDT
EWS
Comment 4 2024-05-28 18:42:37 PDT
Committed 279419@main (d06b72cc3780): <https://commits.webkit.org/279419@main> Reviewed commits have been landed. Closing PR #29168 and removing active labels.
Radar WebKit Bug Importer
Comment 5 2024-05-28 18:43:14 PDT
Note You need to log in before you can comment on or make changes to this bug.