From dd6e6700f8a736029e23f5446ba1dab6ad6f6f7c Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Fri, 11 Sep 2020 13:43:41 -0700 Subject: [PATCH 1/3] fix: call node::Stop on exit --- shell/browser/electron_browser_main_parts.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/browser/electron_browser_main_parts.cc b/shell/browser/electron_browser_main_parts.cc index f70997008e15e..78a40a153c4bf 100644 --- a/shell/browser/electron_browser_main_parts.cc +++ b/shell/browser/electron_browser_main_parts.cc @@ -551,6 +551,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun() { node_debugger_->Stop(); node_env_->env()->set_trace_sync_io(false); js_env_->OnMessageLoopDestroying(); + node::Stop(node_env_->env()); node_env_.reset(); ElectronBrowserContext::browser_context_map().clear(); From d26ecd8d19e8cde059127d9f02c3168bf3b956cd Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Mon, 14 Sep 2020 09:48:28 -0700 Subject: [PATCH 2/3] also call Stop in node_main --- shell/app/node_main.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/app/node_main.cc b/shell/app/node_main.cc index 29480dc6ca302..6e91403e51976 100644 --- a/shell/app/node_main.cc +++ b/shell/app/node_main.cc @@ -290,6 +290,7 @@ int NodeMain(int argc, char* argv[]) { node::RunAtExit(env); node::FreeEnvironment(env); + node::Stop(env); node::FreeIsolateData(isolate_data); gin_env.platform()->DrainTasks(isolate); From f0b7ff126a797deb7d88b7e1ac0c5754cdd294fa Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Mon, 14 Sep 2020 09:49:05 -0700 Subject: [PATCH 3/3] oop, we were already calling set_can_call_into_js(false)?? --- shell/app/node_main.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/shell/app/node_main.cc b/shell/app/node_main.cc index 6e91403e51976..70b146d6fdd08 100644 --- a/shell/app/node_main.cc +++ b/shell/app/node_main.cc @@ -284,13 +284,12 @@ int NodeMain(int argc, char* argv[]) { node::ResetStdio(); - env->set_can_call_into_js(false); + node::Stop(env); env->stop_sub_worker_contexts(); env->RunCleanup(); node::RunAtExit(env); node::FreeEnvironment(env); - node::Stop(env); node::FreeIsolateData(isolate_data); gin_env.platform()->DrainTasks(isolate);