llvm-project icon indicating copy to clipboard operation
llvm-project copied to clipboard

ICE: Assertion `D && "Cannot get layout of forward declarations!"' failed.

Open chengniansun opened this issue 4 years ago • 2 comments

Bugzilla Link 50828
Version trunk
OS Linux
CC @DougGregor,@zygoloid

Extended Description

$ clang-trunk -v clang version 13.0.0 (https://github.com/llvm/llvm-project.git 5c8659801a4976ef2b327f4071d98086efd42a36) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/cnsun/usr/bin Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Candidate multilib: x32;@mx32 Selected multilib: .;@m64

$ cat mutant.c

register struct U u asm("xmm7");

$ clang-trunk mutant.c clang-13: /tmp/tmp.FIfHBNID2p-clang-builder/llvm-project/clang/lib/AST/RecordLayoutBuilder.cpp:3229: const clang::ASTRecordLayout& clang::ASTContext::getASTRecordLayout(const clang::RecordDecl*) const: Assertion `D && "Cannot get layout of forward declarations!"' failed. PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script. Stack dump: 0. Program arguments: /scratch/software/clang-trunk/bin/clang-13 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -main-file-name mutant.c -mrelocation-model static -mframe-pointer=all -fmath-errno -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/scratch/cnsun/workspace/perses-fuzzer/default_c_finding_folder/crash_20210623_110424_01b5/delta/perses_result -resource-dir /scratch/software/clang-trunk/lib/clang/13.0.0 -c-isystem . -c-isystem /usr/local/include/cmsith -internal-isystem /scratch/software/clang-trunk/lib/clang/13.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdebug-compilation-dir=/scratch/cnsun/workspace/perses-fuzzer/default_c_finding_folder/crash_20210623_110424_01b5/delta/perses_result -ferror-limit 19 -fgnuc-version=4.2.1 -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/mutant-0df727.o -x c mutant.c

  1. mutant.c:1:32: current parser token ';' #​0 0x0000563ef8879c64 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0 #​1 0x0000563ef887741e SignalHandler(int) Signals.cpp:0:0 #​2 0x00007fcf697f63c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0) #​3 0x00007fcf6929518b raise /build/glibc-ZN95T4/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1 #​4 0x00007fcf69274859 abort /build/glibc-ZN95T4/glibc-2.31/stdlib/abort.c:81:7 #​5 0x00007fcf69274729 get_sysdep_segment_value /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:509:8 #​6 0x00007fcf69274729 _nl_load_domain /build/glibc-ZN95T4/glibc-2.31/intl/loadmsgcat.c:970:34 #​7 0x00007fcf69285f36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36) #​8 0x0000563efbaaa4d8 clang::ASTContext::getASTRecordLayout(clang::RecordDecl const*) const (/scratch/software/clang-trunk/bin/clang-13+0x6b7f4d8) #​9 0x0000563efb6fe3ca clang::ASTContext::getTypeInfoImpl(clang::Type const*) const (/scratch/software/clang-trunk/bin/clang-13+0x67d33ca) #​10 0x0000563efb6ee2ff clang::ASTContext::getTypeInfo(clang::Type const*) const (/scratch/software/clang-trunk/bin/clang-13+0x67c32ff) #​11 0x0000563efb6fd899 clang::ASTContext::getTypeInfoImpl(clang::Type const*) const (/scratch/software/clang-trunk/bin/clang-13+0x67d2899) #​12 0x0000563efb6ee2ff clang::ASTContext::getTypeInfo(clang::Type const*) const (/scratch/software/clang-trunk/bin/clang-13+0x67c32ff) #​13 0x0000563efad5748c clang::Sema::ActOnVariableDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::TypeSourceInfo*, clang::LookupResult&, llvm::MutableArrayRefclang::TemplateParameterList*, bool&, llvm::ArrayRefclang::BindingDecl*) (/scratch/software/clang-trunk/bin/clang-13+0x5e2c48c) #​14 0x0000563efad6d506 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRefclang::TemplateParameterList*) (/scratch/software/clang-trunk/bin/clang-13+0x5e42506) #​15 0x0000563efad6e0c9 clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&) (/scratch/software/clang-trunk/bin/clang-13+0x5e430c9) #​16 0x0000563efaab1fe0 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/scratch/software/clang-trunk/bin/clang-13+0x5b86fe0) #​17 0x0000563efaac531b clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/scratch/software/clang-trunk/bin/clang-13+0x5b9a31b) #​18 0x0000563efaa93426 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/scratch/software/clang-trunk/bin/clang-13+0x5b68426) #​19 0x0000563efaa93a11 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0 #​20 0x0000563efaa9a217 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) (/scratch/software/clang-trunk/bin/clang-13+0x5b6f217) #​21 0x0000563efaa9b7ae clang::Parser::ParseTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5b707ae) #​22 0x0000563efaa9bb59 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtrclang::DeclGroupRef&) (/scratch/software/clang-trunk/bin/clang-13+0x5b70b59) #​23 0x0000563efaa8dfca clang::ParseAST(clang::Sema&, bool, bool) (/scratch/software/clang-trunk/bin/clang-13+0x5b62fca) #​24 0x0000563ef99d5678 clang::CodeGenAction::ExecuteAction() (/scratch/software/clang-trunk/bin/clang-13+0x4aaa678) #​25 0x0000563ef9285029 clang::FrontendAction::Execute() (/scratch/software/clang-trunk/bin/clang-13+0x435a029) #​26 0x0000563ef92181e6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/scratch/software/clang-trunk/bin/clang-13+0x42ed1e6) #​27 0x0000563ef9362eb0 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/scratch/software/clang-trunk/bin/clang-13+0x4437eb0) #​28 0x0000563ef618b6f6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/scratch/software/clang-trunk/bin/clang-13+0x12606f6) #​29 0x0000563ef6187a38 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0 #​30 0x0000563ef60b50a6 main (/scratch/software/clang-trunk/bin/clang-13+0x118a0a6) #​31 0x00007fcf692760b3 __libc_start_main /build/glibc-ZN95T4/glibc-2.31/csu/../csu/libc-start.c:342:3 #​32 0x0000563ef61875ae _start (/scratch/software/clang-trunk/bin/clang-13+0x125c5ae) clang-13: error: unable to execute command: Aborted (core dumped) clang-13: error: clang frontend command failed due to signal (use -v to see invocation) clang version 13.0.0 (https://github.com/llvm/llvm-project.git 5c8659801a4976ef2b327f4071d98086efd42a36) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/cnsun/usr/bin clang-13: note: diagnostic msg:

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT: Preprocessed source(s) and associated run script(s) are located at: clang-13: note: diagnostic msg: /tmp/mutant-a9156f.c clang-13: note: diagnostic msg: /tmp/mutant-a9156f.sh clang-13: note: diagnostic msg:


chengniansun avatar Jun 24 '21 01:06 chengniansun

This still reproduces on current trunk(c3b27c236d6a495acbe2ba95c43faf9a98e81a46) with the same assert triggering

https://godbolt.org/z/7P7TPxxKq

clang: /root/llvm-project/clang/lib/AST/RecordLayoutBuilder.cpp:3294:
const clang::ASTRecordLayout& clang::ASTContext::getASTRecordLayout(const clang::RecordDecl*) const:
Assertion `D && "Cannot get layout of forward declarations!"' failed.
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: /opt/compiler-explorer/clang-assertions-trunk/bin/clang -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-9.2.0 -fcolor-diagnostics -fno-crash-diagnostics <source>
1.	<source>:1:32: current parser token ';'
 #0 0x000055cb44c5ff2f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3c52f2f)
 #1 0x000055cb44c5dc9c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3c50c9c)
 #2 0x000055cb44ba8398 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f3e42c2b420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f3e426f800b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007f3e426d7859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007f3e426d7729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007f3e426e8fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x000055cb487576c8 clang::ASTContext::getASTRecordLayout(clang::RecordDecl const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x774a6c8)
 #9 0x000055cb482fdce1 clang::ASTContext::getTypeInfoImpl(clang::Type const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x72f0ce1)
#10 0x000055cb482eb41f clang::ASTContext::getTypeInfo(clang::Type const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x72de41f)
#11 0x000055cb482fcf9b clang::ASTContext::getTypeInfoImpl(clang::Type const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x72eff9b)
#12 0x000055cb482eb41f clang::ASTContext::getTypeInfo(clang::Type const*) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x72de41f)
#13 0x000055cb4774157f clang::Sema::ActOnVariableDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::TypeSourceInfo*, clang::LookupResult&, llvm::MutableArrayRef<clang::TemplateParameterList*>, bool&, llvm::ArrayRef<clang::BindingDecl*>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x673457f)
#14 0x000055cb4775a1b7 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x674d1b7)
#15 0x000055cb4775ad35 clang::Sema::ActOnDeclarator(clang::Scope*, clang::Declarator&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x674dd35)
#16 0x000055cb47400fa0 clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x63f3fa0)
#17 0x000055cb4740e5c8 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x64015c8)
#18 0x000055cb473db4b1 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x63ce4b1)
#19 0x000055cb473dbd6f clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#20 0x000055cb473e2711 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x63d5711)
#21 0x000055cb473e3086 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x63d6086)
#22 0x000055cb473e3524 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x63d6524)
#23 0x000055cb473d6dfa clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x63c9dfa)
#24 0x000055cb45ed99a8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4ecc9a8)
#25 0x000055cb45723b79 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x4716b79)
#26 0x000055cb456a94c6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x469c4c6)
#27 0x000055cb458082a6 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x47fb2a6)
#28 0x000055cb421020ed cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10f50ed)
#29 0x000055cb420fddea ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x000055cb4550823d 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
#31 0x000055cb44ba88a0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3b9b8a0)
#32 0x000055cb4550885f 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.0) Job.cpp:0:0
#33 0x000055cb454cf9ec clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x44c29ec)
#34 0x000055cb454d047d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x44c347d)
#35 0x000055cb454d855d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x44cb55d)
#36 0x000055cb4210034a clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10f334a)
#37 0x000055cb420065c5 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xff95c5)
#38 0x00007f3e426d9083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#39 0x000055cb420f8bce _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x10ebbce)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134

wheatman avatar Jun 27 '23 16:06 wheatman

@llvm/issue-subscribers-clang-frontend

llvmbot avatar Jun 27 '23 17:06 llvmbot