<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/145160>145160</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MicrosoftCXXNameMangler] Crash on const struct
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kasper93
</td>
</tr>
</table>
<pre>
Hi
I noticed that ffmpeg cannot be built with asan on Windows, turns out there is `typedef const struct ...` in one of the files, which crashes the mangler... I know this `const` doesn't mean much, but would be nice to not crash.
I tested with v19.1.5 and HEAD, the following report is from be7e4113c84317feda055cac68a855429e46e381.
### Command
`clang --target=x86_64-pc-windows-msvc -fsanitize=function -c r.c`
### Source code
``` c
typedef const struct {
int i;
} a;
void b(a c) {}
```
### Result
```
Stack dump:
0. Program arguments: E:\\dev\\llvm-project\\build\\bin\\clang.exe --target=x86_64-pc-windows-msvc -fsanitize=function -c r.c
1. <eof> parser at end of file
2. r.c:4:6: LLVM IR generation of declaration 'b'
3. r.c:4:6: Generating code for declaration 'b'
Exception Code: 0xC0000005
#0 0x00007ff7a0407757 clang::ASTContext::getDeclaratorForUnnamedTagDecl(class clang::TagDecl const *) E:\dev\llvm-project\clang\lib\AST\ASTContext.cpp:13439:0
#1 0x00007ff7a08f40ba `anonymous namespace'::MicrosoftCXXNameMangler::mangleUnqualifiedName E:\dev\llvm-project\clang\lib\AST\MicrosoftMangle.cpp:1287:0
#2 0x00007ff7a08e43bf `anonymous namespace'::MicrosoftCXXNameMangler::mangleName E:\dev\llvm-project\clang\lib\AST\MicrosoftMangle.cpp:973:0
#3 0x00007ff7a08f11c4 `anonymous namespace'::MicrosoftCXXNameMangler::mangleType E:\dev\llvm-project\clang\lib\AST\MicrosoftMangle.cpp:3260:0
#4 0x00007ff7a08f2b61 `anonymous namespace'::MicrosoftCXXNameMangler::mangleType E:\dev\llvm-project\build\tools\clang\include\clang\AST\TypeNodes.inc:77:0
#5 0x00007ff7a08e1eb8 `anonymous namespace'::MicrosoftCXXNameMangler::mangleFunctionArgumentType E:\dev\llvm-project\clang\lib\AST\MicrosoftMangle.cpp:2417:0
#6 0x00007ff7a08e2f67 `anonymous namespace'::MicrosoftCXXNameMangler::mangleFunctionType E:\dev\llvm-project\clang\lib\AST\MicrosoftMangle.cpp:3050:0
#7 0x00007ff7a08f2867 `anonymous namespace'::MicrosoftCXXNameMangler::mangleType E:\dev\llvm-project\clang\lib\AST\MicrosoftMangle.cpp:2605:0
#8 0x00007ff7a08e1850 `anonymous namespace'::MicrosoftMangleContextImpl::mangleCanonicalTypeName E:\dev\llvm-project\clang\lib\AST\MicrosoftMangle.cpp:4150:0
#9 0x00007ff79dcc2174 std::basic_string<char,std::char_traits<char>,std::allocator<char> >::data C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\include\xstring:2332:0
#10 0x00007ff79dcc2174 llvm::StringRef::{ctor} E:\dev\llvm-project\llvm\include\llvm\ADT\StringRef.h:108:0
#11 0x00007ff79dcc2174 clang::CodeGen::CodeGenFunction::getUBSanFunctionTypeHash(class clang::QualType) const E:\dev\llvm-project\clang\lib\CodeGen\CodeGenFunction.cpp:623:0
#12 0x00007ff79dcbc22f clang::CodeGen::CodeGenFunction::StartFunction(class clang::GlobalDecl, class clang::QualType, class llvm::Function *, class clang::CodeGen::CGFunctionInfo const &, class clang::CodeGen::FunctionArgList const &, class clang::SourceLocation, class clang::SourceLocation) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenFunction.cpp:1048:0
#13 0x00007ff79dcb735e clang::CodeGen::CodeGenFunction::GenerateCode(class clang::GlobalDecl, class llvm::Function *, class clang::CodeGen::CGFunctionInfo const &) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenFunction.cpp:1559:0
#14 0x00007ff79db6ecf3 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(class clang::GlobalDecl, class llvm::GlobalValue *) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenModule.cpp:6210:0
#15 0x00007ff79db6ea9d clang::CodeGen::CodeGenModule::EmitGlobalDefinition(class clang::GlobalDecl, class llvm::GlobalValue *) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenModule.cpp:4314:0
#16 0x00007ff79db6dec6 clang::CodeGen::CodeGenModule::EmitGlobal(class clang::GlobalDecl) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenModule.cpp:4029:0
#17 0x00007ff79db71ded clang::CodeGen::CodeGenModule::EmitTopLevelDecl(class clang::Decl *) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenModule.cpp:7114:0
#18 0x00007ff79e551b4c `anonymous namespace'::CodeGeneratorImpl::HandleTopLevelDecl E:\dev\llvm-project\clang\lib\CodeGen\ModuleBuilder.cpp:190:0
#19 0x00007ff79e522251 clang::BackendConsumer::HandleTopLevelDecl(class clang::DeclGroupRef) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenAction.cpp:172:0
#20 0x00007ff79f74b306 clang::ParseAST(class clang::Sema &, bool, bool) E:\dev\llvm-project\clang\lib\Parse\ParseAST.cpp:174:0
#21 0x00007ff79e827494 clang::ASTFrontendAction::ExecuteAction(void) E:\dev\llvm-project\clang\lib\Frontend\FrontendAction.cpp:1339:0
#22 0x00007ff79e5214ca clang::CodeGenAction::ExecuteAction(void) E:\dev\llvm-project\clang\lib\CodeGen\CodeGenAction.cpp:1112:0
#23 0x00007ff79e8272a4 clang::FrontendAction::Execute(void) E:\dev\llvm-project\clang\lib\Frontend\FrontendAction.cpp:1225:0
#24 0x00007ff79e809064 llvm::Error::operator bool E:\dev\llvm-project\llvm\include\llvm\Support\Error.h:242:0
#25 0x00007ff79e809064 clang::CompilerInstance::ExecuteAction(class clang::FrontendAction &) E:\dev\llvm-project\clang\lib\Frontend\CompilerInstance.cpp:1055:0
#26 0x00007ff79e91f099 clang::ExecuteCompilerInvocation(class clang::CompilerInstance *) E:\dev\llvm-project\clang\lib\FrontendTool\ExecuteCompilerInvocation.cpp:300:0
#27 0x00007ff79ab6d201 cc1_main(class llvm::ArrayRef<char const *>, char const *, void *) E:\dev\llvm-project\clang\tools\driver\cc1_main.cpp:298:0
#28 0x00007ff79ab6571a ExecuteCC1Tool E:\dev\llvm-project\clang\tools\driver\driver.cpp:223:0
#29 0x00007ff79e68ca71 clang::driver::CC1Command::Execute::__l7::<lambda_1>::operator() E:\dev\llvm-project\clang\lib\Driver\Job.cpp:436:0
#30 0x00007ff79e68ca71 llvm::function_ref<void __cdecl(void)>::callback_fn<`clang::driver::CC1Command::Execute'::`7'::<lambda_1> > E:\dev\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h:46:0
#31 0x00007ff79d7e45ca llvm::CrashRecoveryContext::RunSafely(class llvm::function_ref<(void)>) E:\dev\llvm-project\llvm\lib\Support\CrashRecoveryContext.cpp:235:0
#32 0x00007ff79e68d315 clang::driver::CC1Command::Execute(class llvm::ArrayRef<class std::optional<class llvm::StringRef>>, class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> *, bool *) const E:\dev\llvm-project\clang\lib\Driver\Job.cpp:436:0
#33 0x00007ff79e5a47cb std::_Func_class<void,clang::driver::Command const &,int>::_Empty C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\include\functional:939:0
#34 0x00007ff79e5a47cb std::function<void __cdecl(clang::driver::Command const &,int)>::operator bool C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\include\functional:1192:0
#35 0x00007ff79e5a47cb clang::driver::Compilation::ExecuteCommand(class clang::driver::Command const &, class clang::driver::Command const *&, bool) const E:\dev\llvm-project\clang\lib\Driver\Compilation.cpp:197:0
#36 0x00007ff79e5a4a8b clang::driver::Compilation::ExecuteJobs(class clang::driver::JobList const &, class llvm::SmallVectorImpl<struct std::pair<int, class clang::driver::Command const *>> &, bool) const E:\dev\llvm-project\clang\lib\Driver\Compilation.cpp:251:0
#37 0x00007ff79e57d519 llvm::SmallVectorBase<unsigned int>::empty E:\dev\llvm-project\llvm\include\llvm\ADT\SmallVector.h:82:0
#38 0x00007ff79e57d519 clang::driver::Driver::ExecuteCompilation(class clang::driver::Compilation &, class llvm::SmallVectorImpl<struct std::pair<int, class clang::driver::Command const *>> &) E:\dev\llvm-project\clang\lib\Driver\Driver.cpp:2241:0
#39 0x00007ff79ab67921 clang_main(int, char **, struct llvm::ToolContext const &) E:\dev\llvm-project\clang\tools\driver\driver.cpp:408:0
#40 0x00007ff79ab7a044 main E:\dev\llvm-project\build\tools\clang\tools\driver\clang-driver.cpp:17:0
#41 0x00007ff7a11ac92c invoke_main D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78:0
#42 0x00007ff7a11ac92c __scrt_common_main_seh D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288:0
#43 0x00007ffa695be8d7 (C:\WINDOWS\System32\KERNEL32.DLL+0x2e8d7)
#44 0x00007ffa6b0bc34c (C:\WINDOWS\SYSTEM32\ntdll.dll+0x3c34c)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 21.0.0git (be7e4113c84317feda055cac68a855429e46e381)
Target: x86_64-pc-windows-msvc```
Thanks,
Kacper
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMWl13m7i6_jXKjVa8kMTnRS4IdtrMpD1z6kxnzpWXEMLmBCRvEE6yf_1eEmAL4ny49czsrLQBhF4976ceCdGmKdaC8yvgXQNvfkFbtZH11QNttryOyEUqs-erzwVwYuDEt1BIVTCeQbWhCuZ5teVryKgQUsGUw7QtSgUfC7WBtKECSgH_KEQmHxuAE6jaWjRQtgqqDa85LBoIfEc9b3nGc8ikaBRsVN0yBWezGfAdWGgRHMpc94B5UXIj6HFTsA1kNW02vDFNFRXrktez2QzewgchH6HadOKNWC0rk7wRAAcKVpwKWLVso2WlrYKPsi0zjV8UjEMltZad-Nmgt-KN4lmn2g5FMzTzIBUZ_LyI50Y3jU-WpXwsxBrWfCtrpRXMa1nBlAfcRYiw0CUoyHlGHc9jlPkhDT3PxRF3fU5C1I8GMOl-YSKriopMP_MdVlKxhpeXitZrrgCZP4X-yncvt-zysTPyZdXsGLzMGyoKVfybAzLPW8FUIQW8ZLCeMeA70zGWsq0Zh0xmHHYDdb-QASc-6hwQXAMnhhDCQihYAKJvQTCHtLvcySKDKcAhhQzgyLwfzG3ZUwzfeNOWqn9qvbRUlD3ArK22gOg2ZwbNz2-1XNe0grRetxUXqgEkhgv9jpcAL8n4rrsoy111ua3l_3Omuic6QrP-shDdhTHsjD_xnzWuE6MeICAJlzkgC7ildcNrSBXkItORrKMYODHu39T9SOwCEvtaibu771_g7Te45oLX1AiXOcw4K2l_C3CQAhwAJybHRXzqu4p159Rc1q8IWDwxvjXPEplx3dd5Shzz42kPA0wc6Dzp-yDPA-q4ThB4ATQG09Ymcby8T6RQ_El192uu5v1Ysr6R9e9C0Ipn93StHwMcspI2jS2hb-pDDOBYh0zvy86REy92fb2kLFLgJfHyvvu_hzFjWx0siLgkAiR2ej3QSI8wd52U6vJAhRTPlWwbqHE2W8q4to1B9qVgtWxkrpI___xKK_6lKzJdY1dxfhf_amlZ5AXP9Bsn494P0ckewOMwsLDjMXbukjQ_A_YzAo4CYuElE1sjxNwz4L1_3p4LL8G-YwF2J4Bx6qO_A_BQjJSUZWMpUAhWthm3nnTKaIFfZcabWSF0ygd2lHiTKEE8Dc-gxE1f4-K-1J7RC9hFtgL-RAGc-8EZFThn-DieHT7BNHzCswA_p6V9x7MAh9NQCT3nw4A7wX21va22pY050SIKRksTqucrMC4aWTyyFIgyxjAKXNiorIOS0qZgq0bVhZ5jErahNcDJvlnfr1RNC00bulaysF-gZSmZnr8OzVC_YhozqihMOqUGGnJjiKmFHX4vmpaWcKnarJDAS7CDMfASzedaUahn4CXfNfW47zP_y9LcInfmkhlxQycclYGnQZkYE4J7Q-hZzTlmCG3lDuzSdPvG8-4WBNdMqxXM33SL6W8P3z-I59pBe5mzjZ6qnNCCg47BseZ6TTM-cTG6GfJzzx9-v15SYWftZ9psjjGH_227ONOEoWMPHw-2Acn-ahiwDzgfE0svPNYrZRjnp-m1VLRW-0dHlPlUypSWHUlK4Bu6Do0HLw9iO_J0pPMY3qfh_VuRyz3t8t_vaU0Fd0Wj3unarSvudCYZlT_wyim87z0HIse1I5NMPBgQj5_mwZ5Wc0OVP-jA8_vorCbyvMgykTsyUepzlpP3TPRFZm3Ju0eLqlCdEYZx5jwv9GLp4xF_MFjX-p2WLT99UfBC8w7nPreRY-ntTfWmUfZjev-X6usS5Fr6-hN9M878H9P3PS3PqIKD7VANxioEKOMnu-xebu_4jpevrUvNovTMngjQyBM2D4u456HUZe_xsF4sNwvsA_36TEVWclunHwLdob3W6xJeD2UisrMlGmPGGHvINts1ZQ9cZIkUTVsNhPYlutcs_qmW7VYTlp-zejyqc4FFmfCIMuWBmxJnFP6_0brhmoseQbjkFR0mvFTK8vD3FLRmhOFvvLzfw7RiA4-oFA9x4EbuZOPlptYkXGSxNUstnjhrFY8HnrGTRXYaukGqdTm2JiFWKmI8iQfkMnokFc-L8R1_I2Q7nEwtienIkm-Y8a8xIMaeBc8dw3Mix7cp_KKuZZ9FcttlvQm5H2Lwy3a7lbV-w4g1DB67trG8Y2hG7qy2RcnrW9EoKhg_7tEXiTM2xOlUxrLpFMGe73m2VUeTHI9Q7kSRDahHfBC227PQl-inQ54-LQz49XpPW_-10fcbDFbJxaPZjqZ-hh0EGUOrihYHvIeQieuaPptFn1m-WjurZp0LJw9xAs2O_QlKDRtWWV3seK0bejTDfkNkcW8cTvB7AaJwMEGC7t-L5ldH7S6GMe0VGx5PU37IaDCapnoZnXsTNHxoGSW_uVmtyn7mBSQpaZVmdIX2uwFDSgIcnhYQ80GHX2S6p2n-QYHRxvtegYOPh08Pq9r42ThwtWJZN7X2RWsPk9GyTCl7WOUCkGT4lvRxSwzkA_hOcLgZ2QPqfz-xq3B_N6waaLl4UjVtTHVybZuMtxcC7nqMWjZJatpsvnEmd7x-Hn2V-NaKJc15-XwkWyaWHFvvHZ_2KnQuPRTXY0CGKCVWlSJ44uRMr0ZO9c2b-W-a9jtbctsZeN9ydKtoMdSJcefj22rDR8F3t9em4o7sspkw6iqSmeL6inTq3s67uTVmBB51A5YegK10IK4M2j6zAE5ec0rnkdFWSCHUPvFWi2qrnv_2_cJ8n0qAxJHN14j7pu75fstjWlJONIBVfMa05R81BUKRRXaId8wWryu6LUr6giIOOXmENrxnp5ebQG_1iEfrjp_ICkuT_QovsKziT61Cw5Ot8otMm_dM8otMX9tGtMpSRcvyO2f7xW4yrTdbWugSYoLuZJMONeevsiz2kGXZYGzZIPNQdFzXa9pwQJJWmMM5GbRrCjcl5Sem2sMwZooN7ZQIj0F8xZxz63rEaF8l0q-Ezj_v_B-ibvMx_XRtV0cTzhtEuOefA2sfMGsybrI7tmbTgw10mespxOn7wG8zZtf-duM6Y8QBdVwXaqw_9An75QpBN1yOxkdW1XFHBzQQoizCDBZiJx-4sRicdygo8JLVo6wfdM0HXqIHaWoGvGTH9iAMC9uxRtFatdv9G4d7_sRXTFaVFLNC6JkhsE2Bj2FZrRpWq76XgbRq-OYvhoVDG5fFW6gfeSkPswACHPZz6h-3X-f_88dSp_hzo3hF9Lz56-Lb18UdwbP53R3A184T1r30_NzJdG2ZqZMy4rLjMv9veb_4YmQKlZXlLCtLI5DoLp3AIfUg73ctupCHeb_8haxPwpwWJc9g1prjdrrIUU33wrbh8HJnnnFu3L__NjSIhzteN7poYDRzZs660BkRfvSIXSfovj_lFcPjx7wmB9XuN1Q8NAAnwIl_pWzL64vsimQRiegFv0KB53iO67noYnMVBXnqUZ8ThBwX5Yy6aZqnXpanJPCzjF8UV9jBnuNjhBDyXDRzAyfieZ6GWUYj7BHgOryiRTnTmTaT9fqiaJqWXyHXQ75zUdKUl405rYmx4I_QtALNkeYX9ZVJz7RdN8B1yqJRzUGMKlRpjnm-dvbAm0OzcoFSjA78XbR1ebVRatvomMA3AN-sC7Vp0xmTFcA3plh1f_aVAd8YXA3ANz3w3RX-TwAAAP__0fcdVg">