From 1122723f1cdd261648bfd1e04d6ed9be97136cff Mon Sep 17 00:00:00 2001 From: Andreas Madsen Date: Fri, 5 Jan 2018 16:40:18 +0100 Subject: [PATCH 1/2] trace_events: stop tracing agent in process.exit() --- src/node.cc | 1 + .../test-trace-events-process-exit.js | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 test/parallel/test-trace-events-process-exit.js diff --git a/src/node.cc b/src/node.cc index 472ab81147eb81..dfb43772767084 100644 --- a/src/node.cc +++ b/src/node.cc @@ -2029,6 +2029,7 @@ static void WaitForInspectorDisconnect(Environment* env) { static void Exit(const FunctionCallbackInfo& args) { WaitForInspectorDisconnect(Environment::GetCurrent(args)); + v8_platform.StopTracingAgent(); exit(args[0]->Int32Value()); } diff --git a/test/parallel/test-trace-events-process-exit.js b/test/parallel/test-trace-events-process-exit.js new file mode 100644 index 00000000000000..be45cb1d3e0f22 --- /dev/null +++ b/test/parallel/test-trace-events-process-exit.js @@ -0,0 +1,22 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const cp = require('child_process'); +const fs = require('fs'); + +const FILE_NAME = 'node_trace.1.log'; + +common.refreshTmpDir(); +process.chdir(common.tmpDir); + +const proc = cp.spawn(process.execPath, + [ '--trace-events-enabled', + '-e', 'process.exit()' ]); + +proc.once('exit', common.mustCall(() => { + assert(common.fileExists(FILE_NAME)); + fs.readFile(FILE_NAME, common.mustCall((err, data) => { + const traces = JSON.parse(data.toString()).traceEvents; + assert(traces.length > 0); + })); +})); From 77820d615e59d7cb72e489dbe895cb87f67d17e5 Mon Sep 17 00:00:00 2001 From: Andreas Madsen Date: Fri, 5 Jan 2018 16:51:24 +0100 Subject: [PATCH 2/2] [squash] only stop tracking if enabled --- src/node.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/node.cc b/src/node.cc index dfb43772767084..e55dda68258d4b 100644 --- a/src/node.cc +++ b/src/node.cc @@ -2029,7 +2029,9 @@ static void WaitForInspectorDisconnect(Environment* env) { static void Exit(const FunctionCallbackInfo& args) { WaitForInspectorDisconnect(Environment::GetCurrent(args)); - v8_platform.StopTracingAgent(); + if (trace_enabled) { + v8_platform.StopTracingAgent(); + } exit(args[0]->Int32Value()); }