<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61326>61326</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang] crash inside clang::Sema::Diag() at delayed typos correction
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
crash-on-invalid,
crash
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ArcsinX
</td>
</tr>
</table>
<pre>
**Code**
```cpp
#include <utility>
template <typename... T>
void foo(T &&...Params) {
std::forward<T>(Unknown);
((std::forward<T>(Unknown)), ...);
}
```
**Output**
```
1.cpp:5:3: error: expression contains unexpanded parameter pack 'T'
std::forward<T>(Unknown);
^ ~
1.cpp:6:21: error: use of undeclared identifier 'Unknown'
((std::forward<T>(Unknown)), ...);
^
Stack dump:
0. Program arguments: bin/clang 1.cpp -c
1. 1.cpp:7:1: current parser token '}'
2. 1.cpp:4:25: parsing function body 'foo'
3. 1.cpp:4:25: in compound statement ('{}')
#0 0x00005624eeb2609f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#1 0x00005624eeb23d14 llvm::sys::CleanupOnSignal(unsigned long) (bin/clang+0x1f3ed14)
#2 0x00005624eea8c7e8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f88b86dc980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#4 0x00005624f0a9a487 clang::Sema::Diag(clang::SourceLocation, unsigned int, bool) (bin/clang+0x3eb5487)
#5 0x00005624f0d75e10 emitEmptyLookupTypoDiagnostic(clang::TypoCorrection const&, clang::Sema&, clang::CXXScopeSpec const&, clang::DeclarationName, clang::SourceLocation, llvm::ArrayRef<clang::Expr*>, unsigned int, unsigned int) (.isra.11513) SemaExpr.cpp:0:0
#6 0x00005624f0d76379 std::_Function_handler<void (clang::TypoCorrection const&), clang::Sema::DiagnoseEmptyLookup(clang::Scope*, clang::CXXScopeSpec&, clang::LookupResult&, clang::CorrectionCandidateCallback&, clang::TemplateArgumentListInfo*, llvm::ArrayRef<clang::Expr*>, clang::TypoExpr**)::'lambda'(clang::TypoCorrection const&)>::_M_invoke(std::_Any_data const&, clang::TypoCorrection const&) SemaExpr.cpp:0:0
#7 0x00005624f0eb557f clang::Sema::CorrectDelayedTyposInExpr(clang::Expr*, clang::VarDecl*, bool, llvm::function_ref<clang::ActionResult<clang::Expr*, true> (clang::Expr*)>) (bin/clang+0x42d057f)
#8 0x00005624f0eb6ca1 clang::Sema::ActOnFinishFullExpr(clang::Expr*, clang::SourceLocation, bool, bool, bool) (bin/clang+0x42d1ca1)
#9 0x00005624f10bbf8f clang::Sema::ActOnExprStmt(clang::ActionResult<clang::Expr*, true>, bool) (bin/clang+0x44d6f8f)
#10 0x00005624f0a2f614 clang::Parser::ParseExprStatement(clang::Parser::ParsedStmtContext) (bin/clang+0x3e4a614)
#11 0x00005624f0a2572a clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (bin/clang+0x3e4072a)
#12 0x00005624f0a260df clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (bin/clang+0x3e410df)
#13 0x00005624f0a26fe5 clang::Parser::ParseCompoundStatementBody(bool) (bin/clang+0x3e41fe5)
#14 0x00005624f0a27793 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (bin/clang+0x3e42793)
#15 0x00005624f096bfff clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (bin/clang+0x3d86fff)
#16 0x00005624f0a42dab clang::Parser::ParseSingleDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo const&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (bin/clang+0x3e5ddab)
#17 0x00005624f0a4af30 clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (bin/clang+0x3e65f30)
#18 0x00005624f0a4b216 clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (bin/clang+0x3e66216)
#19 0x00005624f0997500 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (bin/clang+0x3db2500)
#20 0x00005624f096dbde clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (bin/clang+0x3d88bde)
#21 0x00005624f096f3fa clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (bin/clang+0x3d8a3fa)
#22 0x00005624f09619aa clang::ParseAST(clang::Sema&, bool, bool) (bin/clang+0x3d7c9aa)
#23 0x00005624efb87815 clang::CodeGenAction::ExecuteAction() (bin/clang+0x2fa2815)
#24 0x00005624ef5633b1 clang::FrontendAction::Execute() (bin/clang+0x297e3b1)
#25 0x00005624ef4f40ca clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (bin/clang+0x290f0ca)
#26 0x00005624ef631c3b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (bin/clang+0x2a4cc3b)
#27 0x00005624ed99872c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (bin/clang+0xdb372c)
#28 0x00005624ed993965 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#29 0x00005624ef372819 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#30 0x00005624eea8cc23 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (bin/clang+0x1ea7c23)
#31 0x00005624ef373271 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.275) Job.cpp:0:0
#32 0x00005624ef340388 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (bin/clang+0x275b388)
#33 0x00005624ef340d83 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (bin/clang+0x275bd83)
#34 0x00005624ef3485ac clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (bin/clang+0x27635ac)
#35 0x00005624ed996d17 clang_main(int, char**, llvm::ToolContext const&) (bin/clang+0xdb1d17)
#36 0x00005624ed90e701 main (bin/clang+0xd29701)
#37 0x00007f88b7370c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#38 0x00005624ed98fc8a _start (bin/clang+0xdaac8a)
clang: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 17.0.0 (https://github.com/llvm/llvm-project.git 01487f384a1eeb664bc6803cc996054f838eda95)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /llvm-project/build/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl1v3LrR_jXyDWFBIvVBXfhis47PmyDndRC7pwe9WVAkteaJllQpyrF70d9ekJJ2Ra20cU6LoEADx9aKHzPPM8OZIbmkbcVecn4TpO-C9PaKdOZJ6ZuNpq2Qv1-Vir3eBHATwM1WMd4_BdFtEI2_s6j_oU0zvIFISFp3jIMAbTsjamFeA_R-OsrwQ1MT43qY14ZLcuBhGILHY79nJRiolAogfgQBzAKYhWH4mWhyaANYgCB_13cErWEB2gRoUyn9jWgWoK2bBuK_yK9SfZMBLAI09gYBxAHEbxpkf7YgDMPpDEF-O0Pu0eEIuu9M0xmPLL9zHFq60CYN0AYFaAO41kq7h5dG87YVSgKqpCFCtqCT_KUhknEGGksAN1yDhtCvIID5YwDzEduPUpG-B__0FcoCtIGxp1HXcqAq0EnGaU00Z0AwLo2oBNdWgePUoxr_LsNg4V-Qev7zYCx61h2szv2rKOx7ftZqr8kBEL3vDlya1mIohQzgHa2J3AMHFVzTEXg_bCQgD9DG4aed1lway3jLNTDqK5cWrrX_CBXOBieWPWtTN0rIPag6SY01pl1Idrhz6WE4Wh0urPUPjeokA60hhlskPbG59fxeB1gcGUcRiF6iKIrSDCaclzCLigp81kIax9WjJpQ_iL0k9f8RyWquA4jtGnNOWoC-qR0Uidz_49zxbG7E4gTU9fOhN3D72vYP25oT2TX3sp8tgLiTLrowUCu5d8sW4oktAvgueokrxFmceGigJ5FgmnMMtpq0T184Vc9cv86xCGns_F6frZKGv5hlUGgQkVcYlzhjtMAR2O00b43SfKcHuu9qUQbw7gVnuyy5roXsXq73susbGvOkOWFhq8KoxwILHHlIkgmSKiIFSXAOevCOswd-IP3TrSD7AOJpm-o05Z8UJdaF7Eo58ungbkGpVL1CK-JlmmDfSVJPGZanPI4APwjz_tCY109Kfe2ax9dGWVWkao2gvkK2bau05r1PUyVb42Lz9gzS2dvt778_UNXwh4bTtZG3LsI4tP9PDnw-7xkdJx_caE1ev_AqQNvJiPcvjbYObsPOOXn-Z0diKFpNwjhOY-RWBT8QO8eyB2UzNjOUF6cQvLsblv7uaXBStHVJ7Y2UFkusHh1FqpZPjDbzG8uzW9irFjjnvp_oC2-7esEyJxW3RDLBiOFbUtcloV_POz8O2X0zhOBPojUfZKUGlX7MajOuxkYXtvrXAcxrcigZcTHxjeSi94OZft0J-ay-8mnK2m3k644RQ9YcdX3i7_hM7vkML9M0r5atPEx_y2vyypkV2H6QPXq8QJav329E27U0NPRRYkr8mJZ2ek7-xr0f3GDRLHALjO54gN6DFVUcu8tRKYEsSvPKi0p4xklGSbzMyYaae3knpGif7rq6fisb54FjZMT_u6ZxTEnsaVxMNY6jsqzwihWdxlarB3Mwvq4_wvT3dExYVuETqzZnR37igVUWJ1MdP7u6ZvLcaznUGr6qZ32ZhTOk19X8k5BsktatTvFMpzSH5KJOR33u9SQ3bCrD9cYYLcrO8DaA-OTZDwdS179xamzxOiW1N4AjFcHOcTpf1d-BedGn5j7Xj58quSht3mONyiiHxKMSzqjMIlb9CSr_W7hbwx1HzHdrNMdd8fSiHtuhjj7if6fYqxV2qXRK4oqnntxZHQfzvEAX5Y7pfy53Vu6seI5nuT6dX_AOmBfI09Yv9IqsrKrL3jFqe8srIcXgGbMBQu5Hz1H6LR4w1gE2969l0umoT8Tw06qwVcMF32A4qyrfN_yCjCSQkfIys0Luaz6PLKPa58bqoS879Z-HP_D6ZfPhw335B6dLJfVsxbwplng9NpTytrWln9u4r_pSyhgpPVbzGaukQtFF4CPuCa_32kkmtfgHOXeu71H789BnaYUiDz2eoS9hnF1EP0H9YIg2Qu7_KszTn3Oqn4g8g3HmIS_8GFLkaXTZ7n5a-akov9_jzTmHlTCNPB-A0SyaspLx75RShmtJ6lVG_hOIJqGj39FdCJW4ZNyDFM8gVai6XIk9quYTf-Z1n7OmWO4b8veOfzazmsF2_EUru6WsFiuGU5H8q2JdzT8cGqWNS5cXkh3DBFVeKQThDEtckHMsm4fH2Sb5dErxhl0AYjktiC93WorwqsQ5jlN_z8z4L1z2df5Y2XPaGT68gnhFGqwIxLFXgMDEk5ZmCJXeLulO27Ul2YK4C4KKnKMy9gSlnqCkSiJKfFiHRtRcf5CtIZLyZWTrmq3aFhZRFVGf48xTJkMxRV5KH8SedHo-rnB8SefVxQJJQinyMiCcZkDOigLnkAJK492BCL-Cnh5oPBE9Zv3jWYb3Dm7B5AR2QRdWohxSTxU8UwUVWQpGErbxo_Pg5ZL-w6GpF_XK_LMBO8cQp72DDabFM1841rBqFZ6ZUA5xXDhw62cO41nY9DCGDkdKu0r6waSXPdhyG2_V4UAkmzv5oh2OhzqqsdKJ5WDCj9FC7ocQ1RvpdAq0oy8vcdx_KEkr6K513QcWvc72xc5oIkw7Ns-mI3VtfbPfWw3ttsvkiMY5Qs_50snWeLKCx9P0j6pctMfsNoBgSiGamGLplLxv-dLJB1Lx-tWj87LpVo71Ockp9LYl_kVChXIEcy-G_c-Z2Z05N0SbEObpRYtCn7okQhivUueiHTnLAyOfXmicDbQd1jYrF7puvFQ6QXcWX_O0RBh7boHm2BhGP4rtoyrbdWAfVWm3kx6wS0HyaM2GCGvI4cbgrVwMJn87Iwz7CyWZMYJTQtek306evXS4kAfXmPyJjCxn3TxDKfFSnXdZZVNdxuLh5mzMu6MObpFuzm4X1hLZYqaNWZx74jNffMTzKAZW8OJ4WOSRV0YdT_rd_WKO8ojiHOx2tShtfCHa7IbJ7spO1CyAd3vbdr397eO3v5XHjzC0of-Otl0A78Lw-Oga3TwhDdAGJYkfL2aFAq4oJqAXvAiAEIpPpddo1tO3ANwbUA2lHKCDgSsias7AN2GeAH8RlmjGQYwcy13LwfUzMAq0nAMxqc2mYsAz1-77DnEeRmFkBz4Z07g7ZXhniRDmqStDqg4WtzVv_-e60eoPTk24FwZEcYLzCuGExJyXWZaUNMMRorQosihNKowwZ6Q41dSPRO-5zXpguNvt-q8lTO54-37uihccFOO1u9lXrXjpm1w1Wdec3QrH0UyviWkt3UvfA7liN4gVqCBX_CbOcpykRZ4XV083eUKyHMaQ0LIskzjK0xwVaZFEJaQ8TqIrcQMjiCIUR3GSFKgIc5jkCa1YlXNa8pwEScQPRNShVSlUen8l2rbjN1mMYHZVk5LXrfvSD4SDG8AAbu0nWxxcK3kt5DOpbX06bbCf0tsrfeOQlt2-DZKoFq1pT4KMMLX7QtHWTZzeAjcUCNkKf-d8dvtt1ycxgPW3XsC8NqoF9HjTdtXp-ubHvCOAdw54G8A7h_1fAQAA__8lsAYj">