llvm / llvm/llvm-project

new ICE with clang 21.1.1

Open
#162,943 5 comments 0 reactions 0 assignees View on GitHub
clang:frontend crash needs-reduction
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

Hey,

I'm getting a new ICE when parsing a file frrom a particular project. Here's console output and preprocessed files.

```
FAILED: external/magnum/src/Magnum/GL/CMakeFiles/MagnumGL.dir/Shader.cpp.obj
c:\msys64\clang64\bin\clang++.exe -DCORRADE_IS_DEBUG_BUILD -DFlextGL_EXPORTS -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_DISABLE_OBSOLETE_KEYIO -DJSON_HAS_THREE_WAY_COMPARISON=1 -DMagnumGL_EXPORTS -DNOMINMAX -DUNICODE -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES -D_UNICODE -isystem D:/dev/floormat/external/magnum/src -isystem D:/dev/floormat/build/clang-asan/external/magnum/src -isystem D:/dev/floormat/external/corrade/src -isystem D:/dev/floormat/build/clang-asan/external/corrade/src -march=x86-64-v2 -mtune=native -mavx2 -maes -g -gcolumn-info -gdwarf-aranges -fno-rtti -O0 -fstack-protector-all -g -std=c++23 -fvisibility=hidden -fvisibility-inlines-hidden -fansi-escape-codes -fcolor-diagnostics -fsanitize=address,bounds,undefined -fassume-nothrow-exception-dtor -Wno-ambiguous-reversed-operator -Wno-reserved-macro-identifier -Wstrict-aliasing -Werror=strict-aliasing -Wno-float-equal -fuse-cxa-atexit -Wno-error -Wno-undef -Wno-cast-function-type -Wno-ignored-attributes -Wno-unused-function -Wno-unused-but-set-variable -Wno-error=return-type -MD -MT external/magnum/src/Magnum/GL/CMakeFiles/MagnumGL.dir/Shader.cpp.obj -MF external\magnum\src\Magnum\GL\CMakeFiles\MagnumGL.dir\Shader.cpp.obj.d -o external/magnum/src/Magnum/GL/CMakeFiles/MagnumGL.dir/Shader.cpp.obj -c D:/dev/floormat/external/magnum/src/Magnum/GL/Shader.cpp
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: c:\\msys64\\clang64\\bin\\clang++.exe -DCORRADE_IS_DEBUG_BUILD -DFlextGL_EXPORTS -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_DISABLE_OBSOLETE_KEYIO -DJSON_HAS_THREE_WAY_COMPARISON=1 -DMagnumGL_EXPORTS -DNOMINMAX -DUNICODE -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES -D_UNICODE -isystem D:/dev/floormat/external/magnum/src -isystem D:/dev/floormat/build/clang-asan/external/magnum/src -isystem D:/dev/floormat/external/corrade/src -isystem D:/dev/floormat/build/clang-asan/external/corrade/src -march=x86-64-v2 -mtune=native -mavx2 -maes -g -gcolumn-info -gdwarf-aranges -fno-rtti -O0 -fstack-protector-all -g -std=c++23 -fvisibility=hidden -fvisibility-inlines-hidden -fansi-escape-codes -fcolor-diagnostics -fsanitize=address,bounds,undefined -fassume-nothrow-exception-dtor -Wno-ambiguous-reversed-operator -Wno-reserved-macro-identifier -Wstrict-aliasing -Werror=strict-aliasing -Wno-float-equal -fuse-cxa-atexit -Wno-error -Wno-undef -Wno-cast-function-type -Wno-ignored-attributes -Wno-unused-function -Wno-unused-but-set-variable -Wno-error=return-type -MD -MT external/magnum/src/Magnum/GL/CMakeFiles/MagnumGL.dir/Shader.cpp.obj -MF external\\magnum\\src\\Magnum\\GL\\CMakeFiles\\MagnumGL.dir\\Shader.cpp.obj.d -o external/magnum/src/Magnum/GL/CMakeFiles/MagnumGL.dir/Shader.cpp.obj -c D:/dev/floormat/external/magnum/src/Magnum/GL/Shader.cpp
1. D:/dev/floormat/external/magnum/src/Magnum/GL/Shader.cpp:809:69: current parser token ';'
2. D:/dev/floormat/external/magnum/src/Magnum/GL/Shader.cpp:56:1: parsing namespace 'Magnum'
3. D:/dev/floormat/external/magnum/src/Magnum/GL/Shader.cpp:56:20: parsing namespace 'Magnum::GL'
4. D:/dev/floormat/external/magnum/src/Magnum/GL/Shader.cpp:809:52: parsing function body 'Magnum::GL::Shader::sources'
5. D:/dev/floormat/external/magnum/src/Magnum/GL/Shader.cpp:809:52: in compound statement ('{}')
Exception Code: 0xC000001D
#0 0x00007ffee025ed53 clang::ConversionFixItGenerator::tryToFixConversion(clang::Expr const*, clang::QualType, clang::QualType, clang::Sema&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x83ed53)
#1 0x00007ffee025e48e clang::OverloadCandidateSet::CompleteCandidates(clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef, clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x83e48e)
#2 0x00007ffee025e0ad clang::OverloadCandidateSet::CompleteCandidates(clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef, clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x83e0ad)
#3 0x00007ffee025dbdf clang::OverloadCandidateSet::CompleteCandidates(clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef, clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x83dbdf)
#4 0x00007ffee019fe4d clang::OverloadCandidateSet::NoteCandidates(std::__1::pair, clang::Sema&, clang::OverloadCandidateDisplayKind, llvm::ArrayRef, llvm::StringRef, clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x77fe4d)
#5 0x00007ffee0375f25 llvm::APSInt::operator==(long long) const (c:\msys64\clang64\bin\libclang-cpp.dll+0x955f25)
#6 0x00007ffedfb3684b clang::Sema::BuildOverloadedCallExpr(clang::Scope*, clang::Expr*, clang::UnresolvedLookupExpr*, clang::SourceLocation, llvm::MutableArrayRef, clang::SourceLocation, clang::Expr*, bool, bool) (c:\msys64\clang64\bin\libclang-cpp.dll+0x11684b)
#7 0x00007ffedfac40a6 clang::Sema::ActOnCallExpr(clang::Scope*, clang::Expr*, clang::SourceLocation, llvm::MutableArrayRef, clang::SourceLocation, clang::Expr*) (c:\msys64\clang64\bin\libclang-cpp.dll+0xa40a6)
#8 0x00007ffedfc675f3 clang::CXXConversionDecl::Create(clang::ASTContext&, clang::CXXRecordDecl*, clang::SourceLocation, clang::DeclarationNameInfo const&, clang::QualType, clang::TypeSourceInfo*, bool, bool, clang::ExplicitSpecifier, clang::ConstexprSpecKind, clang::SourceLocation, clang::AssociatedConstraint const&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x2475f3)
#9 0x00007ffedfbca213 clang::VarDecl::getInstantiatedFromStaticDataMember() const (c:\msys64\clang64\bin\libclang-cpp.dll+0x1aa213)
#10 0x00007ffedfbff239 clang::Sema::SubstTemplateArgument(clang::TemplateArgumentLoc const&, clang::MultiLevelTemplateArgumentList const&, clang::TemplateArgumentLoc&, clang::SourceLocation, clang::DeclarationName const&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x1df239)
#11 0x00007ffedfef4728 clang::Sema::SubstDefaultTemplateArgumentIfAvailable(clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::Decl*, llvm::ArrayRef, llvm::ArrayRef, bool&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x4d4728)
#12 0x00007ffedfeef35e clang::FunctionDecl::isOutOfLine() const (c:\msys64\clang64\bin\libclang-cpp.dll+0x4cf35e)
#13 0x00007ffedfe11401 clang::StackExhaustionHandler::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x3f1401)
#14 0x00007ffedfe113a1 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x3f13a1)
#15 0x00007ffedfd0b5d7 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, bool, clang::QualType, clang::Expr::Classification, bool, llvm::function_ref, bool)>) (c:\msys64\clang64\bin\libclang-cpp.dll+0x2eb5d7)
#16 0x00007ffedfd0291d clang::OverloadCandidateSet::BestViableFunction(clang::Sema&, clang::SourceLocation, clang::OverloadCandidate*&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x2e291d)
#17 0x00007ffee0154d43 clang::Sema::DiagnoseAssignmentResult(clang::AssignConvertType, clang::SourceLocation, clang::QualType, clang::QualType, clang::Expr*, clang::AssignmentAction, bool*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x734d43)
#18 0x00007ffee00ece5d clang::Sema::BuildDeclarationNameExpr(clang::CXXScopeSpec const&, clang::DeclarationNameInfo const&, clang::NamedDecl*, clang::NamedDecl*, clang::TemplateArgumentListInfo const*, bool) (c:\msys64\clang64\bin\libclang-cpp.dll+0x6cce5d)
#19 0x00007ffedffa0856 clang::InitializationSequence::InitializationSequence(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef, bool, bool) (c:\msys64\clang64\bin\libclang-cpp.dll+0x580856)
#20 0x00007ffedfb96094 clang::Sema::BuildCXXTypeConstructExpr(clang::TypeSourceInfo*, clang::SourceLocation, llvm::MutableArrayRef, clang::SourceLocation, bool) (c:\msys64\clang64\bin\libclang-cpp.dll+0x176094)
#21 0x00007ffedfbe9e61 clang::computeDependence(clang::DependentScopeDeclRefExpr*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x1c9e61)
#22 0x00007ffedfbca213 clang::VarDecl::getInstantiatedFromStaticDataMember() const (c:\msys64\clang64\bin\libclang-cpp.dll+0x1aa213)
#23 0x00007ffedfbff239 clang::Sema::SubstTemplateArgument(clang::TemplateArgumentLoc const&, clang::MultiLevelTemplateArgumentList const&, clang::TemplateArgumentLoc&, clang::SourceLocation, clang::DeclarationName const&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x1df239)
#24 0x00007ffedfef4728 clang::Sema::SubstDefaultTemplateArgumentIfAvailable(clang::TemplateDecl*, clang::SourceLocation, clang::SourceLocation, clang::Decl*, llvm::ArrayRef, llvm::ArrayRef, bool&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x4d4728)
#25 0x00007ffedfeef35e clang::FunctionDecl::isOutOfLine() const (c:\msys64\clang64\bin\libclang-cpp.dll+0x4cf35e)
#26 0x00007ffedfe11401 clang::StackExhaustionHandler::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x3f1401)
#27 0x00007ffedfe113a1 clang::Sema::runWithSufficientStackSpace(clang::SourceLocation, llvm::function_ref) (c:\msys64\clang64\bin\libclang-cpp.dll+0x3f13a1)
#28 0x00007ffedfd0b5d7 clang::Sema::DeduceTemplateArguments(clang::FunctionTemplateDecl*, clang::TemplateArgumentListInfo*, llvm::ArrayRef, clang::FunctionDecl*&, clang::sema::TemplateDeductionInfo&, bool, bool, bool, clang::QualType, clang::Expr::Classification, bool, llvm::function_ref, bool)>) (c:\msys64\clang64\bin\libclang-cpp.dll+0x2eb5d7)
#29 0x00007ffedfb2f630 clang::Sema::AddTemplateOverloadCandidate(clang::FunctionTemplateDecl*, clang::DeclAccessPair, clang::TemplateArgumentListInfo*, llvm::ArrayRef, clang::OverloadCandidateSet&, bool, bool, bool, clang::CallExpr::ADLCallKind, clang::OverloadCandidateParamOrder, bool) (c:\msys64\clang64\bin\libclang-cpp.dll+0x10f630)
#30 0x00007ffee0105c67 clang::computeDependence(clang::ImplicitValueInitExpr*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x6e5c67)
#31 0x00007ffedfb1afa7 clang::Sema::PerformCopyInitialization(clang::InitializedEntity const&, clang::SourceLocation, clang::ActionResult, bool, bool) (c:\msys64\clang64\bin\libclang-cpp.dll+0xfafa7)
#32 0x00007ffedfafec66 clang::Sema::ActOnReturnStmt(clang::SourceLocation, clang::Expr*, clang::Scope*) (c:\msys64\clang64\bin\libclang-cpp.dll+0xdec66)
#33 0x00007ffedfab4209 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x94209)
#34 0x00007ffee0006328 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5e6328)
#35 0x00007ffee0002380 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5e2380)
#36 0x00007ffee00001d0 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5e01d0)
#37 0x00007ffedfffe205 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5de205)
#38 0x00007ffedfffdd01 clang::Parser::ParseInnerNamespace(llvm::SmallVector const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5ddd01)
#39 0x00007ffedfffc745 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5dc745)
#40 0x00007ffedffff24a clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5df24a)
#41 0x00007ffedfffe0f4 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5de0f4)
#42 0x00007ffedfffdd01 clang::Parser::ParseInnerNamespace(llvm::SmallVector const&, unsigned int, clang::SourceLocation&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5ddd01)
#43 0x00007ffedfffc745 clang::Parser::ParseNamespace(clang::DeclaratorContext, clang::SourceLocation&, clang::SourceLocation) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5dc745)
#44 0x00007ffedffff24a clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5df24a)
#45 0x00007ffedfffe0f4 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x5de0f4)
#46 0x00007ffee0238d31 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr&, clang::Sema::ModuleImportState&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x818d31)
#47 0x00007ffee02389f4 clang::ParseAST(clang::Sema&, bool, bool) (c:\msys64\clang64\bin\libclang-cpp.dll+0x8189f4)
#48 0x00007ffee026170f clang::FrontendAction::Execute() (c:\msys64\clang64\bin\libclang-cpp.dll+0x84170f)
#49 0x00007ffee026127b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x84127b)
#50 0x00007ffee0260d02 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (c:\msys64\clang64\bin\libclang-cpp.dll+0x840d02)
#51 0x00007ff7ad60442d cc1_main(llvm::ArrayRef, char const*, void*) (c:\msys64\clang64\bin\clang++.exe+0x442d)
#52 0x00007ff7ad603c06 llvm::raw_ostream::operator<<(llvm::StringRef) (c:\msys64\clang64\bin\clang++.exe+0x3c06)
#53 0x00007ffee15b463d void std::__1::vector, std::__1::allocator>>, std::__1::allocator, std::__1::allocator>>>>::__assign_with_size[abi:nn210101], std::__1::allocator>>*, std::__1::optional, std::__1::allocator>>*>(std::__1::optional, std::__1::allocator>>*, std::__1::optional, std::__1::allocator>>*, long long) (c:\msys64\clang64\bin\libclang-cpp.dll+0x1b9463d)
#54 0x00007ffee3b1c6c5 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref) (c:\msys64\clang64\bin\libLLVM-21.dll+0xf1c6c5)
#55 0x00007ffee0385a57 clang::driver::CC1Command::Execute(llvm::ArrayRef>, std::__1::basic_string, std::__1::allocator>*, bool*) const (c:\msys64\clang64\bin\libclang-cpp.dll+0x965a57)
#56 0x00007ffee033f1a3 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (c:\msys64\clang64\bin\libclang-cpp.dll+0x91f1a3)
#57 0x00007ffee033ee20 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl>&, bool) const (c:\msys64\clang64\bin\libclang-cpp.dll+0x91ee20)
#58 0x00007ffee033eb4b clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl>&) (c:\msys64\clang64\bin\libclang-cpp.dll+0x91eb4b)
#59 0x00007ff7ad601bfc clang_main(int, char**, llvm::ToolContext const&) (c:\msys64\clang64\bin\clang++.exe+0x1bfc)
#60 0x00007ff7ad601075 main (c:\msys64\clang64\bin\clang++.exe+0x1075)
#61 0x00007ff7ad60a96e WinMainCRTStartup (c:\msys64\clang64\bin\clang++.exe+0xa96e)
#62 0x00007ff7ad60ac26 mainCRTStartup (c:\msys64\clang64\bin\clang++.exe+0xac26)
#63 0x00007fffc47b7374 (C:\Windows\System32\KERNEL32.DLL+0x17374)
#64 0x00007fffc621cc91 (C:\Windows\SYSTEM32\ntdll.dll+0x4cc91)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 21.1.1
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/msys64/clang64/bin
clang++: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: d:/temp/Shader-7c45b0.cpp
clang++: note: diagnostic msg: d:/temp/Shader-7c45b0.sh
clang++: note: diagnostic msg:

********************

[Shader.cpp.txt](https://github.com/user-attachments/files/22859060/Shader.cpp.txt)
[Shader.sh.txt](https://github.com/user-attachments/files/22859058/Shader.sh.txt)

```

Contributor guide

Open the contributing guide

Research direction

Start with the clang++ command, stack dump, and preprocessed source for external/magnum/src/Magnum/GL/Shader.cpp, especially line 809 in Magnum::GL::Shader::sources. Reproduce the crash with clang 21.1.1 and determine the smallest input or invocation that triggers it. Done means the compiler no longer emits an internal compiler error for the reproducer and the behavior is covered by an appropriate regression test.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.