Bug 274765
| Summary: | [Win][clang-cl] Enabling HAVE_INT128_T generates unaligned movaps instructions | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Fujii Hironori <fujii> |
| Component: | JavaScriptCore | Assignee: | Fujii Hironori <fujii> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Fujii Hironori
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 | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Fujii Hironori
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
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
Pull request: https://github.com/WebKit/WebKit/pull/29168
EWS
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
<rdar://problem/128912978>