Skip to content

Commit 7365b00

Browse files
addaleaxtargos
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 5b4fab1 commit 7365b00

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
@@ -211,7 +211,6 @@ class NodeTraceStateObserver :
211211

212212
// This only runs the first time tracing is enabled
213213
controller_->RemoveTraceStateObserver(this);
214-
delete this;
215214
}
216215

217216
void OnTraceDisabled() override {
@@ -233,8 +232,10 @@ static struct {
233232
void Initialize(int thread_pool_size) {
234233
tracing_agent_.reset(new tracing::Agent());
235234
node::tracing::TraceEventHelper::SetAgent(tracing_agent_.get());
236-
auto controller = tracing_agent_->GetTracingController();
237-
controller->AddTraceStateObserver(new NodeTraceStateObserver(controller));
235+
node::tracing::TracingController* controller =
236+
tracing_agent_->GetTracingController();
237+
trace_state_observer_.reset(new NodeTraceStateObserver(controller));
238+
controller->AddTraceStateObserver(trace_state_observer_.get());
238239
StartTracingAgent();
239240
// Tracing must be initialized before platform threads are created.
240241
platform_ = new NodePlatform(thread_pool_size, controller);
@@ -248,6 +249,7 @@ static struct {
248249
// Destroy tracing after the platform (and platform threads) have been
249250
// stopped.
250251
tracing_agent_.reset(nullptr);
252+
trace_state_observer_.reset(nullptr);
251253
}
252254

253255
void DrainVMTasks(Isolate* isolate) {
@@ -300,6 +302,7 @@ static struct {
300302
return platform_;
301303
}
302304

305+
std::unique_ptr<NodeTraceStateObserver> trace_state_observer_;
303306
std::unique_ptr<tracing::Agent> tracing_agent_;
304307
tracing::AgentWriterHandle tracing_file_writer_;
305308
NodePlatform* platform_;

0 commit comments

Comments
 (0)