src: fix TracingController cleanup
This fixes an incorrect deletion of the `TracingController` instance, which in some environments could cause an error about an invalid pointer passed to `free()`. The `TracingController` instance is actually owned by a `unique_ptr` member of the platform, so calling `platform::SetTracingController(nullptr)` is the correct way to delete it. But before that, the `TraceBuffer` must be deleted in order for the tracing loop to exit; that is accomplished by calling `TracingController::Initialize(nullptr)`. PR-URL: https://github.com/nodejs/node/pull/10623 Reviewed-By: Matthew Loring <mattloring@google.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
This commit is contained in:
parent
a5bdcc39ac
commit
58c38c2d2e
@ -56,7 +56,9 @@ void Agent::Stop() {
|
||||
// Perform final Flush on TraceBuffer. We don't want the tracing controller
|
||||
// to flush the buffer again on destruction of the V8::Platform.
|
||||
tracing_controller_->StopTracing();
|
||||
delete tracing_controller_;
|
||||
tracing_controller_->Initialize(nullptr);
|
||||
tracing_controller_ = nullptr;
|
||||
|
||||
// Thread should finish when the tracing loop is stopped.
|
||||
uv_thread_join(&thread_);
|
||||
v8::platform::SetTracingController(platform_, nullptr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user