<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/99036>99036</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Crash inside `clang::ASTDeclWriter::VisitTemplateTypeParmDecl`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Equidamoid
</td>
</tr>
</table>
<pre>
I'm getting the following crash when feeding clangd a `compile_commands.json` file generated for a esp32 cross-compilation build (not sure if it's relevant, the expected behaviour is still not to crash, regardless of the build parameters):
```
I[15:00:10.610] <-- textDocument/documentHighlight(14)
V[15:00:10.906] <<< {"id":15,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[]},"range":{"end":{"character":0,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/build/src/main.cpp"}}}
I[15:00:10.906] <-- textDocument/codeAction(15)
clangd: /var/tmp/portage/sys-devel/clang-19.0.0.9999/work/clang/lib/Serialization/ASTWriterDecl.cpp:1886: void clang::ASTDeclWriter::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*): Assertion `(bool)TC == D->hasTypeConstraint()' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. <eof> parser at end of file
1. /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/stl_iterator.h:2676:34: serializing '_It2'
#0 0x00007f0f9e7adb75 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm/19/bin/../lib64/libLLVM.so.19.0git7a935089+0x11c7b75)
#1 0x00007f0f9e7aaeaf llvm::sys::RunSignalHandlers() (/usr/lib/llvm/19/bin/../lib64/libLLVM.so.19.0git7a935089+0x11c4eaf)
#2 0x00007f0f9e7ab036 (/usr/lib/llvm/19/bin/../lib64/libLLVM.so.19.0git7a935089+0x11c5036)
#3 0x00007f0f9d09d960 (/lib64/libc.so.6+0x3c960)
#4 0x00007f0f9d0ef26c (/lib64/libc.so.6+0x8e26c)
#5 0x00007f0f9d09d8b6 raise (/lib64/libc.so.6+0x3c8b6)
#6 0x00007f0f9d0858b7 abort (/lib64/libc.so.6+0x248b7)
#7 0x00007f0f9d0857db (/lib64/libc.so.6+0x247db)
#8 0x00007f0f9d095eb6 (/lib64/libc.so.6+0x34eb6)
#9 0x00007f0faaa2dc44 clang::ASTDeclWriter::VisitTemplateTypeParmDecl(clang::TemplateTypeParmDecl*) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x33b3c44)
#10 0x00007f0faaa34453 clang::ASTDeclWriter::Visit(clang::Decl*) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x33ba453)
#11 0x00007f0faaa34891 clang::ASTWriter::WriteDecl(clang::ASTContext&, clang::Decl*) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x33ba891)
#12 0x00007f0faaa20762 clang::ASTWriter::WriteDeclAndTypes(clang::ASTContext&) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x33a6762)
#13 0x00007f0faaa21725 clang::ASTWriter::WriteASTCore(clang::Sema&, llvm::StringRef, clang::Module*) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x33a7725)
#14 0x00007f0faaa2276d clang::ASTWriter::WriteAST(clang::Sema&, llvm::StringRef, clang::Module*, llvm::StringRef, bool) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x33a876d)
#15 0x00007f0faaa46c96 clang::PCHGenerator::HandleTranslationUnit(clang::ASTContext&) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x33ccc96)
#16 0x00007f0faabdf202 (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x3565202)
#17 0x00007f0fa84862b5 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0xe0c2b5)
#18 0x00007f0faab98e39 clang::FrontendAction::Execute() (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x351ee39)
#19 0x00007f0faabddd48 clang::PrecompiledPreamble::Build(clang::CompilerInvocation const&, llvm::MemoryBuffer const*, clang::PreambleBounds, clang::DiagnosticsEngine&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::shared_ptr<clang::PCHContainerOperations>, bool, llvm::StringRef, clang::PreambleCallbacks&) (/usr/lib/llvm/19/bin/../lib64/libclang-cpp.so.19.0git7a935089+0x3563d48)
#20 0x00005652bbe2662a (/usr/lib/llvm/19/bin/clangd+0x51662a)
#21 0x00005652bbeb4ce9 (/usr/lib/llvm/19/bin/clangd+0x5a4ce9)
#22 0x00005652bbeb56f5 (/usr/lib/llvm/19/bin/clangd+0x5a56f5)
#23 0x00005652bc090d70 (/usr/lib/llvm/19/bin/clangd+0x780d70)
#24 0x00007f0f9d0ed551 (/lib64/libc.so.6+0x8c551)
#25 0x00007f0f9d15b92c (/lib64/libc.so.6+0xfa92c)
Signalled while building preamble
Filename: /home/build/src/main.cpp
Directory: /home/build/src/build-esp32-s2
Command Line: /home/build/.espressif/tools/xtensa-esp32s2-elf/esp-12.2.0_20230208/xtensa-esp32s2-elf/bin/xtensa-esp32s2-elf-g++ --driver-mode=g++ -DGPIO_NUM_22=GPIO_NUM_MAX -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE <include paths truncated> -mlongcalls -g -fdiagnostics-color=always -std=gnu++17 -fcoroutines -fconcepts -std=c++23 -o CMakeFiles/blink.elf.dir/src/main.cpp.obj -c -resource-dir=/usr/lib/llvm/19/bin/../../../../lib/clang/19 -- /home/build/src/main.cpp
```
``` clangd --version
clangd version 19.0.0git7a935089
Features: linux+debug
Platform: x86_64-pc-linux-gnu
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8WV9v4zYS_zTMCyGBIvX3IQ-OHW8DbLpBnfYO92JQ5MhmVxJ1JOVN7tMfKMmJpd1mt71LAcOWqJkf5zd_KHLMrVWHFuAaJTco2Vzx3h21ub79d68kb7SSV6WWz9d3iGYNPoBzqj1gdwRc6brWX_ydMNwe8ZcjtLgCkMNQzduDxByjlAjddKqGvdBNw1tpw9-tblFKcKVqwAdowXAHElfaYI7BdoxiYbS1wajJndItLntVS4xo3mqHbW8Aqworh2hmsYEaTrx1iK4H0-CpA-EhSzjyk9K9wcpi61RdY6_u9Gizlzdw4EbWYC3W1aA9ztRxwxtwYCyiBWIrRDaIzL9TMn2G2zuU3EQJYitCEFtFJEwjgpINRmwdBNjBk9to0TfgzdzK6fIndTjW6nB0iOZR7GcasH5bYhUknbDGD0bZDaJUSUSpl0gQXSNKvWdNJ8ZBRCkNib8enjXgjlq-PFoYJLSElfCeflEYPGAnhWE6oVuvdjkkFT-02jolzpJDGqFsM4IY3h7gUgFaOYM8csOFAzMOklGrVi2cB85I1nHj_rTqWXtO9xWkN-rFJT4fh6vt-DnqBhDdDvmA6NYagei24aoNRdd5rRE_21xmxVdp8Bq6r9Pg0uu5D-IU_7F8EFthRLcnbhDduqZDdNtp47h36NY-20DCCWoP48WDqAhJSMKiKApEt1-0-Xx-hOi2ViWi2x0YxWv1Hz5OuV3tHv9hlAOzAVEPrNgqyvPUz3zSSo517H3CVqvdo5ca5ceh35RV7hGaruYOHp87eOCm8UKI5hea35ZYjXWFV9aCGUrclxLNS61rRIvHNUZsg9gGbwLEbo_cevW1bq0zXHnv5R6AZrjiqgYZjp57-Hi72t1i25eNcpjjsj9gA95tvuqPznX2JcQH5Y59GQrdeAfVp_NP0Bn9OwgfIGVtDxbRLeatxKoVdS9hWCXGRa_k4rMzXMA0_c5x8RnLvulelgwSIlIgtgZdIXbr1xULBnOHoZV-yRmybpCMBkm67a15idhB-KR7ytN9GgedCGrV9k_Boe0R3UbMWzja5EURvUH0JjgN46Vy3m7r6r0PGHfahEfEVjTNfHhZ7H1vp3zwSzai2f7OUUSz0RqMKCOYPBFCSFaRqoCMyzJL8OCpIbD22Y4XD0a1buD-6J2BaP4qZPiXvbbOAG8QTf2SO0SvwEMEZ2SnGETFYL9P0DAcH6bx-Pvx42_3odWhz_WDchkvWELyAtEb8hRFIiuz1yLyBKIFAQ68-haBX_p2pw4tr3_irayHRT9_Jxtj4NXMRrqwsSQsfY-JE8LS2cTscmJJClmkZJr4AlV4yHQAYaLwJXoBEc8hoKKpeBMiB5qKGUSytCIvU2y4svAdW_JyTiedA-VJXmaYl7703wKicV5mM6BsCZTJ8jsQmSxnEPmCVAJl-jadGBZ0igsIzjmVIo7fez3-S2k3vn1E1_1R7jFWMhG_7m58XZI5OxbHCfsRdnMmf4PlPE7YzPJoaXleRAvLL60err-OwWr3uD7vpoZF8W9mlRfRjBVdZBvJUvojrFat9Glk32T3bjx4mqV0xoMteEQZTb7HY7DWwJzCDho-heb1fbFzRrWHX6BaROxey76G940ZzzKazLjGC640S5c7tm9x_f_w_EPxaf_2bm7Is1TO3JDM3RCnokgvjX5Y__RhPGTqyRPjS_7R8NaOp8tf2-XK8ndlsBCiSGd00hmdUlaU0HeaPUkTSub1c_nu43mcp7Sc1c-D376-lURj-N85DYAIWs6LIZ-7rciBFZeGb40PZyun49YwdvsEonfwP-z1fsDHEQArZqYWiwhLGeczHxuYeibywW-by_FYylY340n00vPrUdDctSctxk6J8Gekr0r6Hhptnm_6qgJzFlktyvs8243uW2mXb6XXk_5texhO2Ysp7lpneqtO8AtU69Y9OIPY-vXxqZo221tVw-7ZOmgQu_UQ1slpP37kBuS-GzTnJeyrkasWzKfOl7LSrZ20zxn3_eXrzG_N69qf3Oy71naSMhnnl5Gn512PL7yyBJqmlP_Q7FNDwOMmkdeawUZz2DIW8GOkLmG515rB0gVsklbJn4f1WjNYdgkrSEFkRv4sbJZ7rRns8igikyR6-ygikmS2CaLzo0iUlAV9-zRT8YK-nmbGE2QNEn85qnpqJPqjdXeu4nFz7_O_5Q1M_Z2320yjCt4oA8Jp8_yW0nAXDB3UwNKz6nrsu-KPvma_qR2C7QxYqypEt07r2iK6fXLQWj6iWRpA7R-C7YKIhjQke0ooI5TkfyQ6xuzrR8HUp8BBII06gQkaLQGxzcv45sPD3af9z7_e7ylF7PXufvVPHGzub243jx93-_Wnn7d3H_bbu4-3iG0QpU0J0g2mg-32QreVOoRHRCkONrtP6_39_a_7h9WH2_3u7l9eZQKYDWPE1ucuT8fd0WJn-lZwBxKxWxw0tW4Pgte1xcEBB9VF-zMQuvYbjA2vv_Bni4NhVdsMrRrPK8pwUAltdO9UC3a4aQV07kVUjIKU4UDj9T3_DD5TPKGyVu3nEOoqlMp8lSOhLn_HgcCBAat7IyDwUt4nP7KmLb5G2XPbMCpwEPxgki764YvB818CQXACY_0r-KLTiacxPPYwL5fSQWoL3PUG_PsDDx0wRG8klP1havrV3FXa-NUff6tVNrfkSl4zWbCCX8F1lNEoYmmURVfHay6TJCnLqmI0STIRV7KKSxmDTPKIkyK-UteU0JhkURoxShMSZjLKRVKktEqIZESgmEDDVR16X4faHK6GBuJ1URCWXtW8hNoOf7RQOnmYomRzZa6HtmPZHyyKSa2ss68ITrkartdDu1G1VkkY_lT5i42AlFz1pr7-643Qkcrpmv43AAD__-RjovI">