fix --prof-process --preprocess flag
This is a one-line fix to prevent the --preprocess option (used with --prof-process to output JSON) to cause an isolate log file profiling process to crash. PR-URL: https://github.com/nodejs/node/pull/14966 Reviewed-By: Luca Maraschi <luca.maraschi@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
6c382dea6b
commit
7c948ce233
@ -32,6 +32,7 @@ if (process.platform === 'darwin') {
|
||||
tickArguments.push.apply(tickArguments, process.argv.slice(1));
|
||||
script = `(function() {
|
||||
arguments = ${JSON.stringify(tickArguments)};
|
||||
function write (s) { process.stdout.write(s) }
|
||||
${script}
|
||||
})()`;
|
||||
eval(script);
|
||||
|
24
test/tick-processor/test-tick-processor-preprocess-flag.js
Normal file
24
test/tick-processor/test-tick-processor-preprocess-flag.js
Normal file
@ -0,0 +1,24 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
|
||||
if (!common.enoughTestCpu)
|
||||
common.skip('test is CPU-intensive');
|
||||
|
||||
if (common.isWindows ||
|
||||
common.isSunOS ||
|
||||
common.isAIX ||
|
||||
common.isLinuxPPCBE ||
|
||||
common.isFreeBSD)
|
||||
common.skip('C++ symbols are not mapped for this os.');
|
||||
|
||||
const base = require('./tick-processor-base.js');
|
||||
|
||||
base.runTest({
|
||||
pattern: /^{/,
|
||||
code: `function f() {
|
||||
require('vm').runInDebugContext('Debug');
|
||||
setImmediate(function() { f(); });
|
||||
};
|
||||
f();`,
|
||||
profProcessFlags: ['--preprocess']
|
||||
});
|
@ -24,23 +24,25 @@ function runTest(test) {
|
||||
|
||||
// Try to match after timeout
|
||||
setTimeout(() => {
|
||||
match(test.pattern, proc, () => ticks);
|
||||
match(test.pattern, proc, () => ticks, test.profProcessFlags);
|
||||
}, RETRY_TIMEOUT);
|
||||
}
|
||||
|
||||
function match(pattern, parent, ticks) {
|
||||
function match(pattern, parent, ticks, flags = []) {
|
||||
// Store current ticks log
|
||||
fs.writeFileSync(LOG_FILE, ticks());
|
||||
|
||||
const proc = cp.spawn(process.execPath, [
|
||||
'--prof-process',
|
||||
'--call-graph-size=10',
|
||||
...flags,
|
||||
LOG_FILE
|
||||
], {
|
||||
stdio: [ 'ignore', 'pipe', 'inherit' ]
|
||||
});
|
||||
|
||||
let out = '';
|
||||
|
||||
proc.stdout.on('data', (chunk) => out += chunk);
|
||||
proc.stdout.once('end', () => {
|
||||
proc.once('exit', () => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user