Skip to content

Commit 64dfe81

Browse files
Anna Henningsenrefack
Anna Henningsen
authored andcommitted
src: do not leak NodeTraceStateObserver
This would otherwise be reported as a memory leak by automated tools. PR-URL: nodejs#25180 Reviewed-By: Richard Lau <[email protected]> Reviewed-By: Joyee Cheung <[email protected]>
1 parent 3611f13 commit 64dfe81

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/node.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,6 @@ class NodeTraceStateObserver :
198198

199199
// This only runs the first time tracing is enabled
200200
controller_->RemoveTraceStateObserver(this);
201-
delete this;
202201
}
203202

204203
void OnTraceDisabled() override {
@@ -220,8 +219,10 @@ static struct {
220219
void Initialize(int thread_pool_size) {
221220
tracing_agent_.reset(new tracing::Agent());
222221
node::tracing::TraceEventHelper::SetAgent(tracing_agent_.get());
223-
auto controller = tracing_agent_->GetTracingController();
224-
controller->AddTraceStateObserver(new NodeTraceStateObserver(controller));
222+
node::tracing::TracingController* controller =
223+
tracing_agent_->GetTracingController();
224+
trace_state_observer_.reset(new NodeTraceStateObserver(controller));
225+
controller->AddTraceStateObserver(trace_state_observer_.get());
225226
StartTracingAgent();
226227
// Tracing must be initialized before platform threads are created.
227228
platform_ = new NodePlatform(thread_pool_size, controller);
@@ -235,6 +236,7 @@ static struct {
235236
// Destroy tracing after the platform (and platform threads) have been
236237
// stopped.
237238
tracing_agent_.reset(nullptr);
239+
trace_state_observer_.reset(nullptr);
238240
}
239241

240242
void DrainVMTasks(Isolate* isolate) {
@@ -287,6 +289,7 @@ static struct {
287289
return platform_;
288290
}
289291

292+
std::unique_ptr<NodeTraceStateObserver> trace_state_observer_;
290293
std::unique_ptr<tracing::Agent> tracing_agent_;
291294
tracing::AgentWriterHandle tracing_file_writer_;
292295
NodePlatform* platform_;

0 commit comments

Comments
 (0)