27 lines
899 B
JavaScript
27 lines
899 B
JavaScript
|
'use strict';
|
||
|
|
||
|
require('../common');
|
||
|
|
||
|
const assert = require('assert');
|
||
|
const { spawnSync } = require('child_process');
|
||
|
|
||
|
// The default --stack-size is 984, which is below Windows' default stack size
|
||
|
// limit of 1 MiB. However, even a slight increase would cause node to exceed
|
||
|
// the 1 MiB limit and thus to crash with the exit code STATUS_STACK_OVERFLOW.
|
||
|
// Newer versions of Node.js allow the stack size to grow to up to 8 MiB, which
|
||
|
// better aligns with default limits on other platforms and which is commonly
|
||
|
// used for browsers on Windows.
|
||
|
// See https://github.com/nodejs/node/issues/43630.
|
||
|
|
||
|
const { status, signal, stderr } = spawnSync(process.execPath, [
|
||
|
'--stack-size=2000',
|
||
|
'-e',
|
||
|
'(function explode() { return explode(); })()',
|
||
|
], {
|
||
|
encoding: 'utf8'
|
||
|
});
|
||
|
|
||
|
assert.strictEqual(status, 1);
|
||
|
assert.strictEqual(signal, null);
|
||
|
assert.match(stderr, /Maximum call stack size exceeded/);
|