google / google/benchmark

[BUG] Potential memory leak when registering a benchmark with a lambda

Open
#1,322 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
10.4k
Forks
1.8k
Avg merge
2d 4h
Merged PRs (30d)
8

Description

**Describe the bug**
clang analyzer / clang-tidy 13 reports "Potential memory leak" when registering a benchmark with a lambda.

```
include/benchmark/benchmark.h:1193:3: error: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks,-warnings-as-errors]
return internal::RegisterBenchmarkInternal(
^
bench.cpp:169:13: note: Calling 'RegisterBenchmark<(lambda at bench.cpp:169:71)>'
RegisterBenchmark("name", [&b](State& state) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/benchmark/benchmark.h:1194:7: note: Memory is allocated
::new BenchType(name, std::forward(fn)));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/benchmark/benchmark.h:1193:3: note: Potential memory leak
return internal::RegisterBenchmarkInternal(
^
1 warning treated as error
```

I confirmed that clang-tidy with "clang-analyzer-*" checks enabled was recently added to this project but it didn't report any issues.

There is no easy way to suppress the warning because it would need to be done in the benchmark.h header.

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.