lib: setup IPC channel before console
Initializing IOCP on the same fd twice can fail on Windows. Consequently, if the IPC channel uses fd 1 or 2 and the console is setup first, writing to the IPC channel will fail. PR-URL: https://github.com/nodejs/node/pull/16562 Fixes: https://github.com/nodejs/node/issues/16141 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
e2ce1307ed
commit
403ccb68a5
12
lib/internal/bootstrap_node.js
vendored
12
lib/internal/bootstrap_node.js
vendored
@ -37,12 +37,6 @@
|
||||
NativeModule.require('internal/process/next_tick').setup();
|
||||
NativeModule.require('internal/process/stdio').setup();
|
||||
|
||||
const browserGlobals = !process._noBrowserGlobals;
|
||||
if (browserGlobals) {
|
||||
setupGlobalTimeouts();
|
||||
setupGlobalConsole();
|
||||
}
|
||||
|
||||
const perf = process.binding('performance');
|
||||
const {
|
||||
NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE,
|
||||
@ -74,6 +68,12 @@
|
||||
|
||||
_process.setupRawDebug();
|
||||
|
||||
const browserGlobals = !process._noBrowserGlobals;
|
||||
if (browserGlobals) {
|
||||
setupGlobalTimeouts();
|
||||
setupGlobalConsole();
|
||||
}
|
||||
|
||||
// Ensure setURLConstructor() is called before the native
|
||||
// URL::ToObject() method is used.
|
||||
NativeModule.require('internal/url');
|
||||
|
18
test/parallel/test-child-process-stdout-ipc.js
Normal file
18
test/parallel/test-child-process-stdout-ipc.js
Normal file
@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
const spawn = require('child_process').spawn;
|
||||
|
||||
if (process.argv[2] === 'child') {
|
||||
process.send('hahah');
|
||||
return;
|
||||
}
|
||||
|
||||
const proc = spawn(process.execPath, [__filename, 'child'], {
|
||||
stdio: ['inherit', 'ipc', 'inherit']
|
||||
});
|
||||
|
||||
proc.on('exit', common.mustCall(function(code) {
|
||||
assert.strictEqual(code, 0);
|
||||
}));
|
Loading…
x
Reference in New Issue
Block a user