Browse Source

fix: broken --trace-sync-io flag in Node.js (#24529)

Shelley Vohr 4 years ago
parent
commit
ce87a7e69f

+ 0 - 1
script/node-disabled-tests.json

@@ -75,7 +75,6 @@
   "parallel/test-signal-handler",
   "parallel/test-source-map",
   "parallel/test-stdout-close-catch",
-  "parallel/test-sync-io-option",
   "parallel/test-tls-cert-chains-concat",
   "parallel/test-tls-cert-chains-in-ca",
   "parallel/test-tls-cli-max-version-1.2",

+ 5 - 0
shell/app/node_main.cc

@@ -256,6 +256,8 @@ int NodeMain(int argc, char* argv[]) {
       node::LoadEnvironment(env);
     }
 
+    env->set_trace_sync_io(env->options()->trace_sync_io);
+
     {
       v8::SealHandleScope seal(isolate);
       bool more;
@@ -279,6 +281,9 @@ int NodeMain(int argc, char* argv[]) {
     }
 
     node_debugger.Stop();
+
+    env->set_trace_sync_io(false);
+
     exit_code = node::EmitExit(env);
 
     node::ResetStdio();

+ 3 - 0
shell/browser/electron_browser_main_parts.cc

@@ -325,6 +325,8 @@ void ElectronBrowserMainParts::PostEarlyInitialization() {
   node_debugger_ = std::make_unique<NodeDebugger>(env);
   node_debugger_->Start();
 
+  env->set_trace_sync_io(env->options()->trace_sync_io);
+
   // Add Electron extended APIs.
   electron_bindings_->BindTo(js_env_->isolate(), env->process_object());
 
@@ -547,6 +549,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun() {
   // Destroy node platform after all destructors_ are executed, as they may
   // invoke Node/V8 APIs inside them.
   node_debugger_->Stop();
+  node_env_->env()->set_trace_sync_io(false);
   js_env_->OnMessageLoopDestroying();
   node_env_.reset();