1'use strict'; 2 3// Testcases for situations involving fatal errors, like Javascript heap OOM 4 5require('../common'); 6const assert = require('assert'); 7const helper = require('../common/report.js'); 8const spawnSync = require('child_process').spawnSync; 9const tmpdir = require('../common/tmpdir'); 10const fixtures = require('../common/fixtures'); 11 12// Common args that will cause an out-of-memory error for child process. 13const ARGS = [ 14 '--max-heap-size=20', 15 fixtures.path('report-oom'), 16]; 17const REPORT_FIELDS = [ 18 ['header.trigger', 'OOMError'], 19 ['javascriptHeap.memoryLimit', 20 * 1024 * 1024 /* 20MB */], 20]; 21 22{ 23 // Verify that --report-on-fatalerror is respected when set. 24 tmpdir.refresh(); 25 const args = ['--report-on-fatalerror', ...ARGS]; 26 const child = spawnSync(process.execPath, args, { cwd: tmpdir.path }); 27 assert.notStrictEqual(child.status, 0, 'Process exited unexpectedly'); 28 29 const reports = helper.findReports(child.pid, tmpdir.path); 30 assert.strictEqual(reports.length, 1); 31 32 const report = reports[0]; 33 helper.validate(report, REPORT_FIELDS); 34} 35