summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/parallel/test-worker-cleanexit-with-moduleload.js24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/parallel/test-worker-cleanexit-with-moduleload.js b/test/parallel/test-worker-cleanexit-with-moduleload.js
new file mode 100644
index 0000000000..172544f50a
--- /dev/null
+++ b/test/parallel/test-worker-cleanexit-with-moduleload.js
@@ -0,0 +1,24 @@
+'use strict';
+require('../common');
+
+// Harden the thread interactions on the exit path.
+// Ensure workers are able to bail out safe at
+// arbitrary execution points. By using a number of
+// internal modules as load candidates, the expectation
+// is that those will be at various control flow points
+// preferrably in the C++ land.
+
+const { Worker } = require('worker_threads');
+for (let i = 0; i < 10; i++) {
+ new Worker("const modules = ['fs', 'assert', 'async_hooks'," +
+ "'buffer', 'child_process', 'net', 'http', 'https', 'os'," +
+ "'path', 'v8', 'vm'];" +
+ 'modules.forEach((module) => {' +
+ 'const m = require(module);' +
+ '});', { eval: true });
+}
+
+// Allow workers to go live.
+setTimeout(() => {
+ process.exit(0);
+}, 200);