[clang] [LifetimeSafety] Extend suggestions for `lifetimebound` to also warn on canonical declarations (PR #198784)
Thurston Dang via cfe-commits
cfe-commits at lists.llvm.org
Sun May 24 14:44:37 PDT 2026
thurstond wrote:
Some of the buildbots are failing after his commit (e.g., Arm MSan: https://lab.llvm.org/staging/#/builders/7/builds/1733; Arm ASan: https://lab.llvm.org/staging/#/builders/42/builds/4748). Could you please take a look?
e.g.,
```
==clang==1613352==ERROR: AddressSanitizer: stack-use-after-scope on address 0xe291ed500f50 at pc 0xb9034ab81a5c bp 0xffffc53e7790 sp 0xffffc53e7788
READ of size 8 at 0xe291ed500f50 thread T0
#0 0xb9034ab81a58 in clang::lifetimes::internal::(anonymous namespace)::LifetimeChecker::getTargetDeclsForAttr(clang::FunctionDecl const*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/Checker.cpp:359:37
#1 0xb9034ab797f8 in reportMisplacedLifetimebound /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/Checker.cpp:442:24
#2 0xb9034ab797f8 in clang::lifetimes::internal::(anonymous namespace)::LifetimeChecker::LifetimeChecker(clang::lifetimes::internal::LoanPropagationAnalysis const&, clang::lifetimes::internal::MovedLoansAnalysis const&, clang::lifetimes::internal::LiveOriginsAnalysis const&, clang::lifetimes::internal::FactManager&, clang::AnalysisDeclContext&, clang::lifetimes::LifetimeSafetySemaHelper*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/Checker.cpp:106:5
#3 0xb9034ab73f30 in clang::lifetimes::internal::runLifetimeChecker(clang::lifetimes::internal::LoanPropagationAnalysis const&, clang::lifetimes::internal::MovedLoansAnalysis const&, clang::lifetimes::internal::LiveOriginsAnalysis const&, clang::lifetimes::internal::FactManager&, clang::AnalysisDeclContext&, clang::lifetimes::LifetimeSafetySemaHelper*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/Checker.cpp:496:19
#4 0xb9034ab5d9dc in clang::lifetimes::internal::LifetimeSafetyAnalysis::run() /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/LifetimeSafety.cpp:98:3
#5 0xb9034ab5e700 in clang::lifetimes::runLifetimeSafetyAnalysis(clang::AnalysisDeclContext&, clang::lifetimes::LifetimeSafetySemaHelper*, clang::lifetimes::LifetimeSafetyStats&, bool) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/LifetimeSafety.cpp:131:12
#6 0xb903496b3b68 in clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::sema::AnalysisBasedWarnings::Policy, clang::sema::FunctionScopeInfo*, clang::Decl const*, clang::QualType) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp:3159:7
#7 0xb9034968d8b4 in clang::Sema::PopFunctionScopeInfo(clang::sema::AnalysisBasedWarnings::Policy const*, clang::Decl*, clang::QualType) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Sema/Sema.cpp:2546:22
#8 0xb90349a85a80 in clang::Sema::ActOnFinishFunctionBody(clang::Decl*, clang::Stmt*, bool, bool) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Sema/SemaDecl.cpp:17152:5
#9 0xb903494bfd00 in clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/ParseStmt.cpp:2454:18
#10 0xb9034931d820 in clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::LateParsedAttrList*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/Parser.cpp:1415:10
#11 0xb90349414e9c in clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/ParseDecl.cpp:2291:17
#12 0xb9034931ae58 in clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/Parser.cpp:1153:10
#13 0xb90349319dcc in clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/Parser.cpp:1175:12
#14 0xb9034931755c in clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/Parser.cpp:1003:14
#15 0xb90349312fa0 in clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/Parser.cpp:711:12
#16 0xb903492f30b0 in clang::ParseAST(clang::Sema&, bool, bool) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Parse/ParseAST.cpp:170:20
#17 0xb9034646ea0c in clang::FrontendAction::Execute() /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1342:3
#18 0xb90346349c34 in clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1021:33
#19 0xb903466bf808 in clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:318:25
#20 0xb9033dc5624c in cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/tools/driver/cc1_main.cpp:296:13
#21 0xb9033dc4e65c in ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/tools/driver/driver.cpp:229:12
#22 0xb9033dc4ccdc in clang_main(int, char**, llvm::ToolContext const&) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/tools/driver/driver.cpp:277:12
#23 0xb9033dc6d7dc in main /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build_asan/tools/clang/tools/driver/clang-driver.cpp:17:10
#24 0xe691ef612f18 (/usr/lib/aarch64-linux-gnu/libc.so.6+0x22f18) (BuildId: b50ceafbd17dc6bceee344a66671c7eaa152bef4)
#25 0xe691ef613058 in __libc_start_main (/usr/lib/aarch64-linux-gnu/libc.so.6+0x23058) (BuildId: b50ceafbd17dc6bceee344a66671c7eaa152bef4)
#26 0xb9033db625ec in _start (/home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm_build_asan/bin/clang-23+0xdd425ec)
Address 0xe291ed500f50 is located in stack of thread T0 at offset 80 in frame
#0 0xb9034ab81078 in clang::lifetimes::internal::(anonymous namespace)::LifetimeChecker::getTargetDeclsForAttr(clang::FunctionDecl const*) /home/b/sanitizer-aarch64-linux-bootstrap-asan/build/llvm-project/clang/lib/Analysis/LifetimeSafety/Checker.cpp:325
This frame has 2 object(s):
[32, 48) 'ref.tmp' (line 340)
[64, 128) 'ref.tmp' (line 360) <== Memory access at offset 80 is inside this variable
```
https://github.com/llvm/llvm-project/pull/198784
More information about the cfe-commits
mailing list