diff --git a/test/fixtures/process/different-registry-per-thread.mjs b/test/fixtures/process/different-registry-per-thread.mjs index 6718ae72b5fd86..018fb42529f6f0 100644 --- a/test/fixtures/process/different-registry-per-thread.mjs +++ b/test/fixtures/process/different-registry-per-thread.mjs @@ -1,15 +1,26 @@ import { isMainThread, Worker } from 'node:worker_threads'; +const registeredRefs = []; + +const ref = { foo: 'foo' }; +registeredRefs.push(ref); + if (isMainThread) { - process.finalization.register({ foo: 'foo' }, () => { + process.finalization.register(ref, () => { process.stdout.write('shutdown on main thread\n'); }); const worker = new Worker(import.meta.filename); + worker.on('error', (err) => { + // Referencing `registeredRefs` here to avoid `ref` being GCed before the worker exits. + console.log(registeredRefs); + throw err; + }); + worker.postMessage('ping'); } else { - process.finalization.register({ foo: 'bar' }, () => { + process.finalization.register(ref, () => { process.stdout.write('shutdown on worker\n'); }); } diff --git a/test/parallel/test-memory-usage.js b/test/parallel/test-memory-usage.js index 8e5ea4de5bf587..9f1160f19ca6e8 100644 --- a/test/parallel/test-memory-usage.js +++ b/test/parallel/test-memory-usage.js @@ -44,6 +44,8 @@ if (r.arrayBuffers > 0) { const after = process.memoryUsage(); assert.ok(after.external - r.external >= size, `${after.external} - ${r.external} >= ${size}`); - assert.strictEqual(after.arrayBuffers - r.arrayBuffers, size, - `${after.arrayBuffers} - ${r.arrayBuffers} === ${size}`); + // `arrayBuffers` is process-wide, so unrelated backing stores may be freed + // between the two snapshots. Check that the live ArrayBuffer is included. + assert.ok(after.arrayBuffers >= size, + `${after.arrayBuffers} >= ${size}`); }