[clang] [Clang][Interp] `__builtin_os_log_format_buffer_size` should be an unevaluated builtin (PR #99895)
Mitch Phillips via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 23 02:23:48 PDT 2024
hctim wrote:
Hi,
Unfortunately this patch appears to have introduced a memory leak that was detected by the sanitizer buildbots (https://lab.llvm.org/buildbot/#/builders/52/builds/1079).
The issue can be reproduced with a minimal ASan build configuration, like:
```
$ cmake \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_USE_LINKER=lld \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS="-fsanitize=address" \
-DCMAKE_CXX_FLAGS="-fsanitize=address" \
-DLLVM_USE_SANITIZER=Address \
/path/to/llvm/llvm
$ LIT_OPTS='--filter builtins' ninja check-clang
FAIL: Clang :: CodeGen/builtins.c (501 of 506) 11:15:42 [210/894]
******************** TEST 'Clang :: CodeGen/builtins.c' FAILED ********************
Exit Code: 1
Command Output (stderr):
--
RUN: at line 1: /usr/local/google/home/mitchp/llvm-build/asan-test/bin/clang -cc1 -internal-isystem /usr/local/google/home/mitc
hp/llvm-build/asan-test/lib/clang/19/include -nostdsysteminc -emit-llvm -o /usr/local/google/home/mitchp/llvm-build/asan-test/t
ools/clang/test/CodeGen/Output/builtins.c.tmp /usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c
+ /usr/local/google/home/mitchp/llvm-build/asan-test/bin/clang -cc1 -internal-isystem /usr/local/google/home/mitchp/llvm-build/
asan-test/lib/clang/19/include -nostdsysteminc -emit-llvm -o /usr/local/google/home/mitchp/llvm-build/asan-test/tools/clang/tes
t/CodeGen/Output/builtins.c.tmp /usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c
/usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c:772:52: warning: invalid conversion specifier ':' [-Wformat-in
valid-specifier]
772 | __builtin_os_log_format(buf, "invalid specifier %: %d even a trailing one%", data);
| ~^
/usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c:772:76: warning: incomplete format specifier [-Wformat]
772 | __builtin_os_log_format(buf, "invalid specifier %: %d even a trailing one%", data);
| ^
2 warnings generated.
RUN: at line 2: not grep __builtin /usr/local/google/home/mitchp/llvm-build/asan-test/tools/clang/test/CodeGen/Output/builtins.
c.tmp
+ not grep __builtin /usr/local/google/home/mitchp/llvm-build/asan-test/tools/clang/test/CodeGen/Output/builtins.c.tmp
RUN: at line 3: /usr/local/google/home/mitchp/llvm-build/asan-test/bin/clang -cc1 -internal-isystem /usr/local/google/home/mitc
hp/llvm-build/asan-test/lib/clang/19/include -nostdsysteminc -emit-llvm -triple x86_64-darwin-apple -o - /usr/local/google/home
/mitchp/llvm/clang/test/CodeGen/builtins.c | /usr/local/google/home/mitchp/llvm-build/asan-test/bin/FileCheck /usr/local/google
/home/mitchp/llvm/clang/test/CodeGen/builtins.c
+ /usr/local/google/home/mitchp/llvm-build/asan-test/bin/clang -cc1 -internal-isystem /usr/local/google/home/mitchp/llvm-build/
asan-test/lib/clang/19/include -nostdsysteminc -emit-llvm -triple x86_64-darwin-apple -o - /usr/local/google/home/mitchp/llvm/c
lang/test/CodeGen/builtins.c
+ /usr/local/google/home/mitchp/llvm-build/asan-test/bin/FileCheck /usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builti
ns.c
/usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c:772:52: warning: invalid conversion specifier ':' [-Wformat-in
valid-specifier]
772 | __builtin_os_log_format(buf, "invalid specifier %: %d even a trailing one%", data);
| ~^
/usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c:772:76: warning: incomplete format specifier [-Wformat]
772 | __builtin_os_log_format(buf, "invalid specifier %: %d even a trailing one%", data);
| ^
2 warnings generated.
RUN: at line 4: /usr/local/google/home/mitchp/llvm-build/asan-test/bin/clang -cc1 -internal-isystem /usr/local/google/home/mitc
hp/llvm-build/asan-test/lib/clang/19/include -nostdsysteminc -emit-llvm -triple x86_64-darwin-apple -fexperimental-new-constant
-interpreter -o - /usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c | /usr/local/google/home/mitchp/llvm-build/a
san-test/bin/FileCheck /usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c
+ /usr/local/google/home/mitchp/llvm-build/asan-test/bin/clang -cc1 -internal-isystem /usr/local/google/home/mitchp/llvm-build/
asan-test/lib/clang/19/include -nostdsysteminc -emit-llvm -triple x86_64-darwin-apple -fexperimental-new-constant-interpreter -
o - /usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c
+ /usr/local/google/home/mitchp/llvm-build/asan-test/bin/FileCheck /usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builti
ns.c
/usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c:772:52: warning: invalid conversion specifier ':' [-Wformat-in
valid-specifier]
772 | __builtin_os_log_format(buf, "invalid specifier %: %d even a trailing one%", data);
| ~^
/usr/local/google/home/mitchp/llvm/clang/test/CodeGen/builtins.c:772:76: warning: incomplete format specifier [-Wformat]
772 | __builtin_os_log_format(buf, "invalid specifier %: %d even a trailing one%", data);
| ^
2 warnings generated.
=================================================================
==2982256==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 16 byte(s) in 1 object(s) allocated from:
#0 0x5649a842c99d in operator new[](unsigned long) /usr/local/google/home/mitchp/llvm/compiler-rt/lib/asan/asan_new_delete.
cpp:89:3
#1 0x5649aeb6ca36 in initialize /usr/local/google/home/mitchp/llvm/llvm/lib/Support/APFloat.cpp:882:25
#2 0x5649aeb6ca36 in llvm::detail::IEEEFloat::IEEEFloat(llvm::detail::IEEEFloat const&) /usr/local/google/home/mitchp/llvm/
llvm/lib/Support/APFloat.cpp:1171:3
#3 0x5649b7fc7960 in Storage /usr/local/google/home/mitchp/llvm/llvm/include/llvm/ADT/APFloat.h:855:20
#4 0x5649b7fc7960 in APFloat /usr/local/google/home/mitchp/llvm/llvm/include/llvm/ADT/APFloat.h:978:3
#5 0x5649b7fc7960 in Floating /usr/local/google/home/mitchp/llvm/clang/lib/AST/Interp/Floating.h:26:7
#6 0x5649b7fc7960 in push<clang::interp::Floating, clang::interp::Floating &> /usr/local/google/home/mitchp/llvm/clang/lib/
AST/Interp/InterpStack.h:36:35
#7 0x5649b7fc7960 in clang::interp::CastFP(clang::interp::InterpState&, clang::interp::CodePtr, llvm::fltSemantics const*,
llvm::RoundingMode) /usr/local/google/home/mitchp/llvm/clang/lib/AST/Interp/Interp.h:2018:9
#8 0x5649b7e102a8 in clang::interp::Compiler<clang::interp::EvalEmitter>::VisitCastExpr(clang::CastExpr const*) /usr/local/
google/home/mitchp/llvm/clang/lib/AST/Interp/Compiler.cpp:287:18
#9 0x5649b7e12409 in clang::interp::Compiler<clang::interp::EvalEmitter>::visit(clang::Expr const*) /usr/local/google/home/
mitchp/llvm/clang/lib/AST/Interp/Compiler.cpp:3248:16
#10 0x5649b7e1e52b in clang::interp::Compiler<clang::interp::EvalEmitter>::VisitBuiltinCallExpr(clang::CallExpr const*) /us
r/local/google/home/mitchp/llvm/clang/lib/AST/Interp/Compiler.cpp:3911:18
#11 0x5649b7e1c155 in clang::interp::Compiler<clang::interp::EvalEmitter>::VisitCallExpr(clang::CallExpr const*) /usr/local
/google/home/mitchp/llvm/clang/lib/AST/Interp/Compiler.cpp:3930:12
#12 0x5649b7e12409 in clang::interp::Compiler<clang::interp::EvalEmitter>::visit(clang::Expr const*) /usr/local/google/home
/mitchp/llvm/clang/lib/AST/Interp/Compiler.cpp:3248:16
#13 0x5649b7e45c6b in clang::interp::Compiler<clang::interp::EvalEmitter>::visitExpr(clang::Expr const*) /usr/local/google/
home/mitchp/llvm/clang/lib/AST/Interp/Compiler.cpp:3561:10
#14 0x5649b7f5fd30 in clang::interp::EvalEmitter::interpretExpr(clang::Expr const*, bool) /usr/local/google/home/mitchp/llv
m/clang/lib/AST/Interp/EvalEmitter.cpp:47:14
#15 0x5649b7dc80e1 in clang::interp::Context::evaluateAsRValue(clang::interp::State&, clang::Expr const*, clang::APValue&)
/usr/local/google/home/mitchp/llvm/clang/lib/AST/Interp/Context.cpp:49:16
#16 0x5649b7c0d5c2 in EvaluateAsRValue((anonymous namespace)::EvalInfo&, clang::Expr const*, clang::APValue&) /usr/local/go
ogle/home/mitchp/llvm/clang/lib/AST/ExprConstant.cpp:15843:38
#17 0x5649b7c019eb in EvaluateAsRValue /usr/local/google/home/mitchp/llvm/clang/lib/AST/ExprConstant.cpp:15920:10
#18 0x5649b7c019eb in clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult&, clang::ASTContext const&, bool) const /usr/lo
cal/google/home/mitchp/llvm/clang/lib/AST/ExprConstant.cpp:15969:10
#19 0x5649afc2c67c in clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::GlobalDecl, unsigned int, clang::CallExpr con
st*, clang::CodeGen::ReturnValueSlot) /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGBuiltin.cpp:2553:28
#20 0x5649af6897e7 in clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot
) /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGExpr.cpp:5468:12
#21 0x5649af6d1c41 in (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) /usr/local/google/hom
e/mitchp/llvm/clang/lib/CodeGen/CGExprScalar.cpp:597:20
#22 0x5649af699aab in (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) /usr/local/google/home/mitchp/llvm/clan
g/lib/CodeGen/CGExprScalar.cpp:422:52
#23 0x5649af6ea1e1 in (anonymous namespace)::ScalarExprEmitter::VisitCastExpr(clang::CastExpr*) /usr/local/google/home/mitc
hp/llvm/clang/lib/CodeGen/CGExprScalar.cpp:2642:33
#24 0x5649af699838 in Visit /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGExprScalar.cpp:422:52
#25 0x5649af699838 in clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) /usr/local/google/home/mitc
hp/llvm/clang/lib/CodeGen/CGExprScalar.cpp:5497:8
#26 0x5649af62cd46 in clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool)
/usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGExpr.cpp:230:24
#27 0x5649af62e4b8 in clang::CodeGen::CodeGenFunction::EmitAnyExprToTemp(clang::Expr const*) /usr/local/google/home/mitchp/
llvm/clang/lib/CodeGen/CGExpr.cpp:249:10
#28 0x5649af77f6d6 in clang::CodeGen::CodeGenFunction::EmitCallArg(clang::CodeGen::CallArgList&, clang::Expr const*, clang:
:QualType) /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGCall.cpp:4742:12
#29 0x5649af77cd28 in clang::CodeGen::CodeGenFunction::EmitCallArgs(clang::CodeGen::CallArgList&, clang::CodeGen::CodeGenFu
nction::PrototypeWrapper, llvm::iterator_range<clang::Stmt::CastIterator<clang::Expr, clang::Expr const* const, clang::Stmt con
st* const>>, clang::CodeGen::CodeGenFunction::AbstractCallee, unsigned int, clang::CodeGen::CodeGenFunction::EvaluationOrder) /
usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGCall.cpp:4587:5
#30 0x5649af68ce0d in clang::CodeGen::CodeGenFunction::EmitCall(clang::QualType, clang::CodeGen::CGCallee const&, clang::Ca
llExpr const*, clang::CodeGen::ReturnValueSlot, llvm::Value*) /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGExpr.cpp:5
986:3
#31 0x5649af689930 in clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot
) /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGExpr.cpp:5476:10
#32 0x5649af6d1c41 in (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) /usr/local/google/hom
e/mitchp/llvm/clang/lib/CodeGen/CGExprScalar.cpp:597:20
#33 0x5649af699838 in Visit /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGExprScalar.cpp:422:52
#34 0x5649af699838 in clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) /usr/local/google/home/mitc
hp/llvm/clang/lib/CodeGen/CGExprScalar.cpp:5497:8
#35 0x5649af62ca67 in EmitAnyExpr /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGExpr.cpp:230:24
#36 0x5649af62ca67 in clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) /usr/local/google/home/mitchp/ll
vm/clang/lib/CodeGen/CGExpr.cpp:205:18
#37 0x5649af482cba in clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*, llvm::ArrayRef<clang::Attr const*>) /us
r/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGStmt.cpp:128:5
#38 0x5649af4a7bf9 in clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang
::CodeGen::AggValueSlot) /usr/local/google/home/mitchp/llvm/clang/lib/CodeGen/CGStmt.cpp:559:7
```
https://github.com/llvm/llvm-project/pull/99895
More information about the cfe-commits
mailing list