Skip to content

Commit

Permalink
lib: instantiate console methods eagerly
Browse files Browse the repository at this point in the history
Before this commit they were instantiated lazily but that fails when the
first call is under stack overflow conditions.

Fixes: nodejs/help#778
  • Loading branch information
bnoordhuis committed Aug 17, 2017
1 parent be63c26 commit 70bbb10
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 1 deletion.
19 changes: 18 additions & 1 deletion lib/internal/bootstrap_node.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@
setupProcessICUVersions();

setupGlobalVariables();
if (!process._noBrowserGlobals) {
const browserGlobals = !process._noBrowserGlobals;
if (browserGlobals) {
setupGlobalTimeouts();
setupGlobalConsole();
}
Expand All @@ -40,6 +41,22 @@
NativeModule.require('internal/process/warning').setup();
NativeModule.require('internal/process/next_tick').setup();
NativeModule.require('internal/process/stdio').setup();
if (browserGlobals) {
// Instantiate eagerly in case the first call is under stack overflow
// conditions where instantiation doesn't work.
const console = global.console;
console.assert;
console.clear;
console.count;
console.countReset;
console.dir;
console.error;
console.log;
console.time;
console.timeEnd;
console.trace;
console.warn;
}
_process.setupKillAndExit();
_process.setupSignalHandlers();
if (global.__coverage__)
Expand Down
18 changes: 18 additions & 0 deletions test/message/stack_overflow_async.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Flags: --stack_trace_limit=3

'use strict';
require('../common');

async function f() {
await f();
}

async function g() {
try {
await f();
} catch (e) {
console.log(e);
}
}

g();
4 changes: 4 additions & 0 deletions test/message/stack_overflow_async.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
RangeError: Maximum call stack size exceeded
at f (*test*message*stack_overflow_async.js:*)
at f (*test*message*stack_overflow_async.js:7:*)
at f (*test*message*stack_overflow_async.js:7:*)

0 comments on commit 70bbb10

Please sign in to comment.