-
Notifications
You must be signed in to change notification settings - Fork 29.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
src: fix fatal errors when a current isolate not exist
napi_fatal_error and node watchdog trigger fatal error but rather running on a thread that hold no current isolate. PR-URL: #38624 Backport-PR-URL: #39515 Reviewed-By: Michael Dawson <midawson@redhat.com>
- Loading branch information
1 parent
a74032a
commit 99493b0
Showing
5 changed files
with
49 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
'use strict'; | ||
const common = require('../../common'); | ||
const assert = require('assert'); | ||
const child_process = require('child_process'); | ||
const test_fatal = require(`./build/${common.buildType}/test_fatal`); | ||
|
||
// Test in a child process because the test code will trigger a fatal error | ||
// that crashes the process. | ||
if (process.argv[2] === 'child') { | ||
test_fatal.TestThread(); | ||
// Busy loop to allow the work thread to abort. | ||
while (true) {} | ||
} | ||
|
||
const p = child_process.spawnSync( | ||
process.execPath, [ __filename, 'child' ]); | ||
assert.ifError(p.error); | ||
assert.ok(p.stderr.toString().includes( | ||
'FATAL ERROR: work_thread foobar')); | ||
assert.ok(p.status === 134 || p.signal === 'SIGABRT'); |