llvm / llvm/llvm-project

[clang][crash] clang crashes with calling of '__builtin_return_address(0)' on AVR target

Open
#222,910 1 comment 0 reactions 1 assignee Claimed by @benshi001 View on GitHub
clang:codegen crash
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

```c++
void ss(void *);
char *ger(int a) {
//int arr[2] = { 2, 4};
//ss(arr);
void *p = __builtin_return_address(1);
return p;
}
```

Build the above a.c with `clang c.c --target=avr -S -emit-llvm` will emit core dump info as

```
clang: /data/home/bennshi/llvm-project/llvm/lib/IR/Instructions.cpp:785: void llvm::CallInst::init(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef, llvm::ArrayRef >, const llvm::Twine&): Assertion `(i >= FTy->getNumParams() || FTy->getParamType(i) == Args[i]->getType()) && "Calling a function with a bad signature!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and dumped files.
Stack dump:
0. Program arguments: /data/home/bennshi/llvm-project/build/bin/clang c.c --target=avr -S
1. c.c:10:1: current parser token 'char'
2. c.c:3:7: LLVM IR generation of declaration 'ger'
3. c.c:3:7: Generating code for declaration 'ger'
#0 0x00000000021acc17 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/home/bennshi/llvm-project/build/bin/clang+0x21acc17)
#1 0x00000000021a9bc4 llvm::sys::RunSignalHandlers() (/data/home/bennshi/llvm-project/build/bin/clang+0x21a9bc4)
#2 0x00000000021aa581 llvm::sys::CleanupOnSignal(unsigned long) (/data/home/bennshi/llvm-project/build/bin/clang+0x21aa581)
#3 0x00000000020f3368 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#4 0x00007f8a5ca28990 __restore_rt (/lib64/libpthread.so.0+0x12990)
#5 0x00007f8a5b4b65af raise (/lib64/libc.so.6+0x4e5af)
#6 0x00007f8a5b489ee5 abort (/lib64/libc.so.6+0x21ee5)
#7 0x00007f8a5b489db9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21db9)
#8 0x00007f8a5b4aef06 (/lib64/libc.so.6+0x46f06)
#9 0x0000000001bc3b00 llvm::CallInst::init(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef, llvm::ArrayRef>, llvm::Twine const&) (/data/home/bennshi/llvm-project/build/bin/clang+0x1bc3b00)
#10 0x00000000029376e6 llvm::IRBuilderBase::CreateCall(llvm::FunctionType*, llvm::Value*, llvm::ArrayRef, llvm::Twine const&, llvm::MDNode*) (.constprop.1115) CGBuiltin.cpp:0:0
#11 0x00000000029542cb clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::GlobalDecl, unsigned int, clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) (/data/home/bennshi/llvm-project/build/bin/clang+0x29542cb)
#12 0x00000000024d6f06 clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot, llvm::CallBase**) (/data/home/bennshi/llvm-project/build/bin/clang+0x24d6f06)
#13 0x0000000002533a52 (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) CGExprScalar.cpp:0:0
#14 0x0000000002531b16 clang::StmtVisitorBase::Visit(clang::Stmt*) CGExprScalar.cpp:0:0
#15 0x0000000002532d8a (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) CGExprScalar.cpp:0:0
#16 0x0000000002532e06 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) (/data/home/bennshi/llvm-project/build/bin/clang+0x2532e06)
#17 0x00000000029cce49 clang::CodeGen::CodeGenFunction::EmitScalarInit(clang::Expr const*, clang::ValueDecl const*, clang::CodeGen::LValue, bool) (/data/home/bennshi/llvm-project/build/bin/clang+0x29cce49)
#18 0x00000000029ce599 clang::CodeGen::CodeGenFunction::EmitExprAsInit(clang::Expr const*, clang::ValueDecl const*, clang::CodeGen::LValue, bool) (/data/home/bennshi/llvm-project/build/bin/clang+0x29ce599)
#19 0x00000000029dc3d8 clang::CodeGen::CodeGenFunction::EmitAutoVarInit(clang::CodeGen::CodeGenFunction::AutoVarEmission const&) (/data/home/bennshi/llvm-project/build/bin/clang+0x29dc3d8)
#20 0x00000000029dcbad clang::CodeGen::CodeGenFunction::EmitVarDecl(clang::VarDecl const&) (.part.1295) CGDecl.cpp:0:0
#21 0x00000000029dd123 clang::CodeGen::CodeGenFunction::EmitDecl(clang::Decl const&, bool) (/data/home/bennshi/llvm-project/build/bin/clang+0x29dd123)
#22 0x0000000002638644 clang::CodeGen::CodeGenFunction::EmitDeclStmt(clang::DeclStmt const&) (/data/home/bennshi/llvm-project/build/bin/clang+0x2638644)
#23 0x000000000264f625 clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*, llvm::ArrayRef) (/data/home/bennshi/llvm-project/build/bin/clang+0x264f625)
#24 0x00000000026483f8 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef) (/data/home/bennshi/llvm-project/build/bin/clang+0x26483f8)
#25 0x000000000264f153 clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) (/data/home/bennshi/llvm-project/build/bin/clang+0x264f153)
#26 0x00000000026af329 clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) (/data/home/bennshi/llvm-project/build/bin/clang+0x26af329)
#27 0x00000000026c26b4 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) (/data/home/bennshi/llvm-project/build/bin/clang+0x26c26b4)
#28 0x00000000027205d0 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/data/home/bennshi/llvm-project/build/bin/clang+0x27205d0)
#29 0x00000000027197a6 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) (/data/home/bennshi/llvm-project/build/bin/clang+0x27197a6)
#30 0x000000000271a4a0 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) (/data/home/bennshi/llvm-project/build/bin/clang+0x271a4a0)
#31 0x000000000271b481 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.10175) CodeGenModule.cpp:0:0
#32 0x0000000002a7a031 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
#33 0x0000000002a6f9d3 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/data/home/bennshi/llvm-project/build/bin/clang+0x2a6f9d3)
#34 0x0000000004610613 clang::ParseAST(clang::Sema&, bool, bool) (/data/home/bennshi/llvm-project/build/bin/clang+0x4610613)
#35 0x0000000002a789a8 clang::CodeGenAction::ExecuteAction() (/data/home/bennshi/llvm-project/build/bin/clang+0x2a789a8)
#36 0x0000000002d65176 clang::FrontendAction::Execute() (/data/home/bennshi/llvm-project/build/bin/clang+0x2d65176)
#37 0x0000000002cf3f13 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/data/home/bennshi/llvm-project/build/bin/clang+0x2cf3f13)
#38 0x0000000002e38c0d clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/data/home/bennshi/llvm-project/build/bin/clang+0x2e38c0d)
#39 0x0000000000c97a0b cc1_main(llvm::ArrayRef, char const*, void*) (/data/home/bennshi/llvm-project/build/bin/clang+0xc97a0b)
#40 0x0000000000c8e2b1 ExecuteCC1Tool(llvm::SmallVectorImpl&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr) driver.cpp:0:0
#41 0x0000000000c8e43d int llvm::function_ref&)>::callback_fn&)>(long, llvm::SmallVectorImpl&) driver.cpp:0:0
#42 0x0000000002ae9089 void llvm::function_ref::callback_fn>, std::__cxx11::basic_string, std::allocator>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#43 0x00000000020f3762 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref) (/data/home/bennshi/llvm-project/build/bin/clang+0x20f3762)
#44 0x0000000002ae9cab clang::driver::CC1Command::Execute(llvm::ArrayRef>, std::__cxx11::basic_string, std::allocator>*, bool*) const (.part.279) Job.cpp:0:0
#45 0x0000000002aaebf3 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/data/home/bennshi/llvm-project/build/bin/clang+0x2aaebf3)
#46 0x0000000002ab3787 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl>&, bool) const (/data/home/bennshi/llvm-project/build/bin/clang+0x2ab3787)
#47 0x0000000002abad85 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl>&) (/data/home/bennshi/llvm-project/build/bin/clang+0x2abad85)
#48 0x0000000000c93557 clang_main(int, char**, llvm::ToolContext const&) (/data/home/bennshi/llvm-project/build/bin/clang+0xc93557)
#49 0x0000000000c198b9 main (/data/home/bennshi/llvm-project/build/bin/clang+0xc198b9)
#50 0x00007f8a5b4a2865 __libc_start_main (/lib64/libc.so.6+0x3a865)
#51 0x0000000000c8d8ce _start (/data/home/bennshi/llvm-project/build/bin/clang+0xc8d8ce)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 24.0.0git (git@github.com:llvm/llvm-project.git d7107a853f92a9e55e8ebd2390aa10c492064ac3)
Target: avr
Thread model: posix
InstalledDir: /data/home/bennshi/llvm-project/build/bin
Build config: +assertions, +expensive-checks
clang: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING CRASH REPRODUCER FILES TO THE BUG REPORT:
clang: note: diagnostic msg: /tmp/c-083f63.c
clang: note: diagnostic msg: /tmp/c-083f63.sh
clang: note: diagnostic msg:

********************
Aborted (core dumped)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.