Skip to content

Commit 96a57a7

Browse files
addaleaxBethGriggs
authored andcommitted
src: do not leak NodeTraceStateObserver
This would otherwise be reported as a memory leak by automated tools. PR-URL: #25180 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Joyee Cheung <[email protected]>
1 parent 5cc39b8 commit 96a57a7

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/node.cc

+6-3
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@ class NodeTraceStateObserver :
258258

259259
// This only runs the first time tracing is enabled
260260
controller_->RemoveTraceStateObserver(this);
261-
delete this;
262261
}
263262

264263
void OnTraceDisabled() override {
@@ -280,8 +279,10 @@ static struct {
280279
void Initialize(int thread_pool_size) {
281280
tracing_agent_.reset(new tracing::Agent());
282281
node::tracing::TraceEventHelper::SetAgent(tracing_agent_.get());
283-
auto controller = tracing_agent_->GetTracingController();
284-
controller->AddTraceStateObserver(new NodeTraceStateObserver(controller));
282+
node::tracing::TracingController* controller =
283+
tracing_agent_->GetTracingController();
284+
trace_state_observer_.reset(new NodeTraceStateObserver(controller));
285+
controller->AddTraceStateObserver(trace_state_observer_.get());
285286
StartTracingAgent();
286287
// Tracing must be initialized before platform threads are created.
287288
platform_ = new NodePlatform(thread_pool_size, controller);
@@ -295,6 +296,7 @@ static struct {
295296
// Destroy tracing after the platform (and platform threads) have been
296297
// stopped.
297298
tracing_agent_.reset(nullptr);
299+
trace_state_observer_.reset(nullptr);
298300
}
299301

300302
void DrainVMTasks(Isolate* isolate) {
@@ -345,6 +347,7 @@ static struct {
345347
return platform_;
346348
}
347349

350+
std::unique_ptr<NodeTraceStateObserver> trace_state_observer_;
348351
std::unique_ptr<tracing::Agent> tracing_agent_;
349352
tracing::AgentWriterHandle tracing_file_writer_;
350353
NodePlatform* platform_;

0 commit comments

Comments
 (0)