[clang] [-Wunsafe-buffer-usage] Allow strerror for %s in printf-like calls (PR #175208)

via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 9 09:40:43 PST 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

* 85360 tests passed
* 1194 tests skipped
* 1 test failed

## Failed Tests
(click on a test name to see its output)

### Clang
<details>
<summary>Clang.SemaCXX/bug149071318.cpp</summary>

```
Exit Code: -6

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/22/include -nostdsysteminc -std=c++20 -Wno-all -Wunsafe-buffer-usage             -verify /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/SemaCXX/bug149071318.cpp
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/22/include -nostdsysteminc -std=c++20 -Wno-all -Wunsafe-buffer-usage -verify /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/SemaCXX/bug149071318.cpp
# .---command stderr------------
# | clang: /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/AST/Decl.h:302: StringRef clang::NamedDecl::getName() const: Assertion `Name.isIdentifier() && "Name is not a simple identifier"' 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: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang -cc1 -internal-isystem /home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/22/include -nostdsysteminc -std=c++20 -Wno-all -Wunsafe-buffer-usage -verify /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/test/SemaCXX/bug149071318.cpp
# | 1.	<eof> parser at end of file
# |  #0 0x0000000008eb9a48 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Support/Unix/Signals.inc:842:13
# |  #1 0x0000000008eb7155 llvm::sys::RunSignalHandlers() /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Support/Signals.cpp:109:18
# |  #2 0x0000000008eba811 SignalHandler(int, siginfo_t*, void*) /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/lib/Support/Unix/Signals.inc:429:38
# |  #3 0x00007b70c8c92330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
# |  #4 0x00007b70c8cebb2c pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x9eb2c)
# |  #5 0x00007b70c8c9227e raise (/lib/x86_64-linux-gnu/libc.so.6+0x4527e)
# |  #6 0x00007b70c8c758ff abort (/lib/x86_64-linux-gnu/libc.so.6+0x288ff)
# |  #7 0x00007b70c8c7581b (/lib/x86_64-linux-gnu/libc.so.6+0x2881b)
# |  #8 0x00007b70c8c88517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
# |  #9 0x000000000bcb4c91 (/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang+0xbcb4c91)
# | #10 0x000000000bcb5b70 libc_func_matchers::hasUnsafeFormatOrSArg(clang::ASTContext&, clang::CallExpr const*, clang::Expr const*&, unsigned int, std::optional<unsigned int const>, bool)::StringFormatStringHandler::HandlePrintfSpecifier(clang::analyze_printf::PrintfSpecifier const&, char const*, unsigned int, clang::TargetInfo const&) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:908:11
# | #11 0x000000000c459d61 clang::analyze_format_string::ParsePrintfString(clang::analyze_format_string::FormatStringHandler&, char const*, char const*, clang::LangOptions const&, clang::TargetInfo const&, bool) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/AST/PrintfFormatString.cpp:0:0
# | #12 0x000000000bcb5843 libc_func_matchers::hasUnsafeFormatOrSArg(clang::ASTContext&, clang::CallExpr const*, clang::Expr const*&, unsigned int, std::optional<unsigned int const>, bool) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:945:14
# | #13 0x000000000bcb54c8 libc_func_matchers::hasUnsafePrintfStringArg(clang::CallExpr const&, clang::ASTContext&, (anonymous namespace)::MatchResult&, llvm::StringRef) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:1193:9
# | #14 0x000000000bcb1197 matches /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:2166:11
# | #15 0x000000000bcb1197 WarningGadgetMatcher::matches(clang::DynTypedNode const&, clang::ASTContext&, clang::UnsafeBufferUsageHandler const&) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Analysis/Analyses/UnsafeBufferUsageGadgets.def:42:1
# | #16 0x000000000bcb647e match<clang::Stmt> /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:237:9
# | #17 0x000000000bcb647e MatchDescendantVisitor::TraverseStmt(clang::Stmt*) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:226:10
# | #18 0x000000000bfe9828 TraverseStmt /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/AST/DynamicRecursiveASTVisitor.cpp:124:47
# | #19 0x000000000bfe9828 TraverseCompoundStmt /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:2558:1
# | #20 0x000000000bfe9828 clang::DynamicRecursiveASTVisitorBase<false>::TraverseCompoundStmt(clang::CompoundStmt*) /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/clang/include/clang/AST/StmtNodes.inc:1686:1
# | #21 0x000000000bfc7638 clang::RecursiveASTVisitor<(anonymous namespace)::Impl<false>>::TraverseStmt(clang::Stmt*, llvm::SmallVectorImpl<llvm::PointerIntPair<clang::Stmt*, 1u, bool, llvm::PointerLikeTypeTraits<clang::Stmt*>, llvm::PointerIntPairInfo<clang::Stmt*, 1u, llvm::PointerLikeTypeTraits<clang::Stmt*>>>>*) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:695:7
# | #22 0x000000000bca79f9 findGadgets(clang::Stmt const*, clang::ASTContext&, clang::UnsafeBufferUsageHandler const&, bool, std::vector<std::unique_ptr<(anonymous namespace)::FixableGadget, std::default_delete<(anonymous namespace)::FixableGadget>>, std::allocator<std::unique_ptr<(anonymous namespace)::FixableGadget, std::default_delete<(anonymous namespace)::FixableGadget>>>>&, std::vector<std::unique_ptr<(anonymous namespace)::WarningGadget, std::default_delete<(anonymous namespace)::WarningGadget>>, std::allocator<std::unique_ptr<(anonymous namespace)::WarningGadget, std::default_delete<(anonymous namespace)::WarningGadget>>>>&, (anonymous namespace)::DeclUseTracker&) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:2849:7
# | #23 0x000000000bca9a46 clang::checkUnsafeBufferUsage(clang::Decl const*, clang::UnsafeBufferUsageHandler&, bool) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Analysis/UnsafeBufferUsage.cpp:4628:5
# | #24 0x000000000b296007 CallableVisitor::VisitFunctionDecl(clang::FunctionDecl*) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp:2833:3
# | #25 0x000000000bfcce86 TraverseFunctionDecl /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:2397:1
# | #26 0x000000000bfcce86 clang::DynamicRecursiveASTVisitorBase<false>::TraverseFunctionDecl(clang::FunctionDecl*) /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/clang/include/clang/AST/DeclNodes.inc:256:1
# | #27 0x000000000bfc6bea TraverseDecl /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/clang/include/clang/AST/DeclNodes.inc:256:1
# | #28 0x000000000bfc6bea clang::DynamicRecursiveASTVisitorBase<false>::TraverseDecl(clang::Decl*) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/AST/DynamicRecursiveASTVisitor.cpp:302:1
# | #29 0x000000000bfc94cc TraverseDeclContextHelper /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1637:7
# | #30 0x000000000bfc94cc TraverseTranslationUnitDecl /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1745:1
# | #31 0x000000000bfc94cc clang::DynamicRecursiveASTVisitorBase<false>::TraverseTranslationUnitDecl(clang::TranslationUnitDecl*) /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/clang/include/clang/AST/DeclNodes.inc:24:1
# | #32 0x000000000b28ce4d _M_mbegin /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:737:64
# | #33 0x000000000b28ce4d _M_begin /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:741:16
# | #34 0x000000000b28ce4d ~_Rb_tree /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_tree.h:986:18
# | #35 0x000000000b28ce4d ~map /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_map.h:314:22
# | #36 0x000000000b28ce4d ~UnsafeBufferUsageHandler /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/include/clang/Analysis/Analyses/UnsafeBufferUsage.h:102:47
# | #37 0x000000000b28ce4d clang::sema::AnalysisBasedWarnings::IssueWarnings(clang::TranslationUnitDecl*) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Sema/AnalysisBasedWarnings.cpp:2972:1
# | #38 0x000000000b27c1d8 clang::Sema::ActOnEndOfTranslationUnit() /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Sema/Sema.cpp:1614:7
# | #39 0x000000000b11f823 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Parse/Parser.cpp:0:13
# | #40 0x000000000b1140fe clang::ParseAST(clang::Sema&, bool, bool) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Parse/ParseAST.cpp:169:5
# | #41 0x0000000009ba33b6 clang::FrontendAction::Execute() /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1317:10
# | #42 0x0000000009b09bad getPtr /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Error.h:278:42
# | #43 0x0000000009b09bad operator bool /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/include/llvm/Support/Error.h:241:16
# | #44 0x0000000009b09bad clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1006:23
# | #45 0x0000000009c9648c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:310:25
# | #46 0x0000000006194899 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/tools/driver/cc1_main.cpp:304:15
# | #47 0x0000000006190665 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/tools/driver/driver.cpp:226:12
# | #48 0x000000000618f6cd clang_main(int, char**, llvm::ToolContext const&) /home/gha/actions-runner/_work/llvm-project/llvm-project/clang/tools/driver/driver.cpp:274:12
# | #49 0x00000000061a0807 main /home/gha/actions-runner/_work/llvm-project/llvm-project/build/tools/clang/tools/driver/clang-driver.cpp:17:10
# | #50 0x00007b70c8c771ca (/lib/x86_64-linux-gnu/libc.so.6+0x2a1ca)
# | #51 0x00007b70c8c7728b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28b)
# | #52 0x000000000618e0a5 _start (/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/clang+0x618e0a5)
# `-----------------------------
# error: command failed with exit status: -6

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

https://github.com/llvm/llvm-project/pull/175208


More information about the cfe-commits mailing list