Open
Description
This issue was copied from checkedc/checkedc-clang#1130
void buz(void) {
char foo _Nt_checked[0];
(void) foo;
}
clang: /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:4321: clang::BoundsExpr* {anonymous}::CheckBoundsDeclarations::CreateBoundsForArrayType(clang::QualType): Assertion `size.uge(1) && "must have at least one element"' failed.
PLEASE submit a bug report to https://github.com/Microsoft/checkedc-clang/issues and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang -c crash.c
1. <eof> parser at end of file
2. crash.c:1:16: parsing function body 'buz'
#0 0x00005579a1652205 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/cc/checkedc-clang/llvm/build/../lib/Support/Unix/Signals.inc:564:22
#1 0x00005579a165229c PrintStackTraceSignalHandler(void*) /home/cc/checkedc-clang/llvm/build/../lib/Support/Unix/Signals.inc:625:1
#2 0x00005579a164ffef llvm::sys::RunSignalHandlers() /home/cc/checkedc-clang/llvm/build/../lib/Support/Signals.cpp:68:20
#3 0x00005579a1651a0b llvm::sys::CleanupOnSignal(unsigned long) /home/cc/checkedc-clang/llvm/build/../lib/Support/Unix/Signals.inc:361:31
#4 0x00005579a157dc72 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /home/cc/checkedc-clang/llvm/build/../lib/Support/CrashRecoveryContext.cpp:77:5
#5 0x00005579a157e164 CrashRecoverySignalHandler(int) /home/cc/checkedc-clang/llvm/build/../lib/Support/CrashRecoveryContext.cpp:383:1
#6 0x00007f0cb51d2420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x15420)
#7 0x00007f0cb4c7118b raise /build/glibc-YbNSs7/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#8 0x00007f0cb4c50859 abort /build/glibc-YbNSs7/glibc-2.31/stdlib/abort.c:81:7
#9 0x00007f0cb4c50729 get_sysdep_segment_value /build/glibc-YbNSs7/glibc-2.31/intl/loadmsgcat.c:509:8
#10 0x00007f0cb4c50729 _nl_load_domain /build/glibc-YbNSs7/glibc-2.31/intl/loadmsgcat.c:970:34
#11 0x00007f0cb4c61f36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
#12 0x00005579a4cc48cd (anonymous namespace)::CheckBoundsDeclarations::CreateBoundsForArrayType(clang::QualType) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:4321:9
#13 0x00005579a4cc4e82 (anonymous namespace)::CheckBoundsDeclarations::ArrayExprBounds(clang::Expr*) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:4426:48
#14 0x00005579a4cc41e2 (anonymous namespace)::CheckBoundsDeclarations::CheckDeclRefExpr(clang::DeclRefExpr*, clang::CheckedScopeSpecifier, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:4151:33
#15 0x00005579a4cbff7e (anonymous namespace)::CheckBoundsDeclarations::CheckLValue(clang::Expr*, clang::CheckedScopeSpecifier, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:3105:67
#16 0x00005579a4cc4f80 (anonymous namespace)::CheckBoundsDeclarations::InferBounds(clang::Expr*, clang::CheckedScopeSpecifier, clang::BoundsExpr*&, clang::BoundsExpr*&, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:4448:22
#17 0x00005579a4cc1c60 (anonymous namespace)::CheckBoundsDeclarations::CheckCastExpr(clang::CastExpr*, clang::CheckedScopeSpecifier, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:3606:29
#18 0x00005579a4cbfc88 (anonymous namespace)::CheckBoundsDeclarations::Check(clang::Stmt*, clang::CheckedScopeSpecifier, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:3020:39
#19 0x00005579a4cc4fb0 (anonymous namespace)::CheckBoundsDeclarations::InferBounds(clang::Expr*, clang::CheckedScopeSpecifier, clang::BoundsExpr*&, clang::BoundsExpr*&, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:4450:22
#20 0x00005579a4cc1c60 (anonymous namespace)::CheckBoundsDeclarations::CheckCastExpr(clang::CastExpr*, clang::CheckedScopeSpecifier, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:3606:29
#21 0x00005579a4cbfc88 (anonymous namespace)::CheckBoundsDeclarations::Check(clang::Stmt*, clang::CheckedScopeSpecifier, (anonymous namespace)::CheckingState&) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:3020:39
#22 0x00005579a4cbf78b (anonymous namespace)::CheckBoundsDeclarations::TraverseCFG(clang::AvailableFactsAnalysis&, clang::FunctionDecl*) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:2896:17
#23 0x00005579a4ccbb6e clang::Sema::CheckFunctionBodyBoundsDecls(clang::FunctionDecl*, clang::Stmt*) /home/cc/checkedc-clang/clang/lib/Sema/SemaBounds.cpp:6314:54
#24 0x00005579a541d612 clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool) /home/cc/checkedc-clang/clang/lib/Sema/SemaDecl.cpp:15470:9
#25 0x00005579a541ce49 clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*) /home/cc/checkedc-clang/clang/lib/Sema/SemaDecl.cpp:15406:1
#26 0x00005579a492f019 clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&, clang::CheckedScopeSpecifier) /home/cc/checkedc-clang/clang/lib/Parse/ParseStmt.cpp:2331:41
#27 0x00005579a4887d26 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) /home/cc/checkedc-clang/clang/lib/Parse/Parser.cpp:1400:36
#28 0x00005579a489f92d clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) /home/cc/checkedc-clang/clang/lib/Parse/ParseDecl.cpp:2013:36
#29 0x00005579a4886a08 clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /home/cc/checkedc-clang/clang/lib/Parse/Parser.cpp:1138:59
#30 0x00005579a4886afb clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /home/cc/checkedc-clang/clang/lib/Parse/Parser.cpp:1154:57
#31 0x00005579a4885e65 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (.localalias) /home/cc/checkedc-clang/clang/lib/Parse/Parser.cpp:956:58
#32 0x00005579a4884fbe clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, bool) /home/cc/checkedc-clang/clang/lib/Parse/Parser.cpp:704:42
#33 0x00005579a488495d clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) /home/cc/checkedc-clang/clang/lib/Parse/Parser.cpp:572:43
#34 0x00005579a4880890 clang::ParseAST(clang::Sema&, bool, bool) /home/cc/checkedc-clang/clang/lib/Parse/ParseAST.cpp:157:47
#35 0x00005579a2589067 clang::ASTFrontendAction::ExecuteAction() /home/cc/checkedc-clang/clang/lib/Frontend/FrontendAction.cpp:1057:11
#36 0x00005579a2739f93 clang::CodeGenAction::ExecuteAction() /home/cc/checkedc-clang/clang/lib/CodeGen/CodeGenAction.cpp:1185:1
#37 0x00005579a25889be clang::FrontendAction::Execute() /home/cc/checkedc-clang/clang/lib/Frontend/FrontendAction.cpp:954:38
#38 0x00005579a24bfcb1 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/cc/checkedc-clang/clang/lib/Frontend/CompilerInstance.cpp:984:42
#39 0x00005579a2726146 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/cc/checkedc-clang/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:278:38
#40 0x000055799fc2544b cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/cc/checkedc-clang/clang/tools/driver/cc1_main.cpp:240:40
#41 0x000055799fc1a313 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /home/cc/checkedc-clang/clang/tools/driver/driver.cpp:330:20
#42 0x00005579a23b2f2d clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()::operator()() const /home/cc/checkedc-clang/clang/lib/Driver/Job.cpp:400:32
#43 0x00005579a23b37f6 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) /home/cc/checkedc-clang/llvm/include/llvm/ADT/STLExtras.h:186:40
#44 0x00005579a156f910 llvm::function_ref<void ()>::operator()() const /home/cc/checkedc-clang/llvm/build/../include/llvm/ADT/STLExtras.h:203:62
#45 0x00005579a157e376 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) /home/cc/checkedc-clang/llvm/build/../lib/Support/CrashRecoveryContext.cpp:419:10
#46 0x00005579a23b3155 clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const /home/cc/checkedc-clang/clang/lib/Driver/Job.cpp:400:7
#47 0x00005579a23629fb clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const /home/cc/checkedc-clang/clang/lib/Driver/Compilation.cpp:195:22
#48 0x00005579a2362d5e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const /home/cc/checkedc-clang/clang/lib/Driver/Compilation.cpp:246:53
#49 0x00005579a2372c0e clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) /home/cc/checkedc-clang/clang/lib/Driver/Driver.cpp:1509:28
#50 0x000055799fc1b2e7 main /home/cc/checkedc-clang/clang/tools/driver/driver.cpp:502:39
#51 0x00007f0cb4c520b3 __libc_start_main /build/glibc-YbNSs7/glibc-2.31/csu/../csu/libc-start.c:342:3
#52 0x000055799fc189ae _start (/home/cc/checkedc-clang/llvm/build/bin/clang-11+0x7a719ae)