From a646565b752bebe4324f80bb1df7ae7924b362e4 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Tue, 11 Jul 2023 12:21:21 -0400 Subject: [PATCH 1/2] test: skip experimental test with pointer compression The test test/parallel/test-experimental-shared-value-conveyor.js was added to test the --harmony-struct feature of V8. However, when used with pointer compression, the process crashes. This commit skips the test for pointer compression builds. This change uses a child process because starting a Node pointer compression build with --harmony-struct immediately crashes the process. Once this crash is addresses, this commit can be reverted. --- ...test-experimental-shared-value-conveyor.js | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/test/parallel/test-experimental-shared-value-conveyor.js b/test/parallel/test-experimental-shared-value-conveyor.js index e61c5efebd0eeb..1b483230efe998 100644 --- a/test/parallel/test-experimental-shared-value-conveyor.js +++ b/test/parallel/test-experimental-shared-value-conveyor.js @@ -1,25 +1,38 @@ 'use strict'; - -// Flags: --harmony-struct - const common = require('../common'); const assert = require('assert'); +const { spawnSync } = require('child_process'); const { Worker, parentPort } = require('worker_threads'); -// Do not use isMainThread so that this test itself can be run inside a Worker. -if (!process.env.HAS_STARTED_WORKER) { - process.env.HAS_STARTED_WORKER = 1; - const m = new globalThis.SharedArray(16); +if (process.env.TEST_CHILD_PROCESS === '1') { + // Do not use isMainThread so that this test itself can be run inside a Worker. + if (!process.env.HAS_STARTED_WORKER) { + process.env.HAS_STARTED_WORKER = 1; + const m = new globalThis.SharedArray(16); - const worker = new Worker(__filename); - worker.once('message', common.mustCall((message) => { - assert.strictEqual(message, m); - })); + const worker = new Worker(__filename); + worker.once('message', common.mustCall((message) => { + assert.strictEqual(message, m); + })); - worker.postMessage(m); + worker.postMessage(m); + } else { + parentPort.once('message', common.mustCall((message) => { + // Simple echo. + parentPort.postMessage(message); + })); + } } else { - parentPort.once('message', common.mustCall((message) => { - // Simple echo. - parentPort.postMessage(message); - })); + if (process.config.variables.v8_enable_pointer_compression === 1) { + common.skip('--harmony-struct cannot be used with pointer compression'); + } + + const args = ['--harmony-struct', __filename]; + const options = { env: { TEST_CHILD_PROCESS: '1' } }; + const child = spawnSync(process.execPath, args, options); + + assert.strictEqual(child.stderr.toString().trim(), ''); + assert.strictEqual(child.stdout.toString().trim(), ''); + assert.strictEqual(child.status, 0); + assert.strictEqual(child.signal, null); } From b2efdf51575d68dce90afc28c698e3387c28e92e Mon Sep 17 00:00:00 2001 From: Colin Ihrig Date: Sat, 15 Jul 2023 11:54:35 -0400 Subject: [PATCH 2/2] Update test/parallel/test-experimental-shared-value-conveyor.js Co-authored-by: Richard Lau --- test/parallel/test-experimental-shared-value-conveyor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parallel/test-experimental-shared-value-conveyor.js b/test/parallel/test-experimental-shared-value-conveyor.js index 1b483230efe998..17eb32c66b1103 100644 --- a/test/parallel/test-experimental-shared-value-conveyor.js +++ b/test/parallel/test-experimental-shared-value-conveyor.js @@ -28,7 +28,7 @@ if (process.env.TEST_CHILD_PROCESS === '1') { } const args = ['--harmony-struct', __filename]; - const options = { env: { TEST_CHILD_PROCESS: '1' } }; + const options = { env: { TEST_CHILD_PROCESS: '1', ...process.env } }; const child = spawnSync(process.execPath, args, options); assert.strictEqual(child.stderr.toString().trim(), '');