From e6b5f8b941ca21bc3d6ff4667fbbd7fd553f76c8 Mon Sep 17 00:00:00 2001 From: hongweipeng Date: Tue, 7 May 2024 15:21:22 +0800 Subject: [PATCH] Fix memory leak in TlsRandomNumberGenerator() constructor #2660 --- sdk/src/common/random.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdk/src/common/random.cc b/sdk/src/common/random.cc index 77b88cfa2a..e1c4d818c9 100644 --- a/sdk/src/common/random.cc +++ b/sdk/src/common/random.cc @@ -7,6 +7,7 @@ #include #include +#include OPENTELEMETRY_BEGIN_NAMESPACE namespace sdk @@ -20,13 +21,16 @@ namespace common // https://github.com/opentracing-contrib/nginx-opentracing/issues/52 namespace { +static std::once_flag once; class TlsRandomNumberGenerator { public: TlsRandomNumberGenerator() noexcept { Seed(); - platform::AtFork(nullptr, nullptr, OnFork); + std::call_once(once, [](){ + platform::AtFork(nullptr, nullptr, OnFork); + }); } static FastRandomNumberGenerator &engine() noexcept { return engine_; }