From 4ded4d16a83b3fb714df5b60003812456097f298 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Fri, 9 Feb 2024 22:44:35 +0100 Subject: [PATCH] fix: destroy `NodeService` message pipe last (#41277) refactor: destroy NodeService message pipe last --- shell/services/node/node_service.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/shell/services/node/node_service.h b/shell/services/node/node_service.h index eae1bd2a5a8a..a7b87da8041c 100644 --- a/shell/services/node/node_service.h +++ b/shell/services/node/node_service.h @@ -61,6 +61,12 @@ class NodeService : public node::mojom::NodeService { void Initialize(node::mojom::NodeServiceParamsPtr params) override; private: + // This needs to be initialized first so that it can be destroyed last + // after the node::Environment is destroyed. This ensures that if + // there are crashes in the node::Environment destructor, they + // will be propagated to the exit handler. + mojo::Receiver receiver_{this}; + bool node_env_stopped_ = false; const std::unique_ptr node_bindings_; @@ -73,8 +79,6 @@ class NodeService : public node::mojom::NodeService { // depends-on: js_env_'s isolate std::shared_ptr node_env_; - - mojo::Receiver receiver_{this}; }; } // namespace electron