| '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/); |