Repository navigation
Reproducible snapshot error #304
Copy link
Copy link
Closed
Description
Seems arm-specific: https://github.com/nodejs/node-v8/actions/runs/19205829620/job/54900847817
=== release test-snapshot-reproducible ===
Path: parallel/test-snapshot-reproducible
Error: --- stderr ---
node:internal/assert/utils:146
throw error;
^
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
+ actual - expected
+ [
+ {
+ offset: '0x2ffec0',
+ slice1: '06000400000000000300000059ab0000',
+ slice2: '060004000000000003000000b8aa0000'
+ },
+ {
+ offset: '0x476eb0',
+ slice1: '00000059ab0000580701106100000000',
+ slice2: '000000b8aa0000580701106100000000'
+ }
+ ]
- []
at Object.<anonymous> (/home/runner/work/node-v8/node-v8/node/test/parallel/test-snapshot-reproducible.js:69:8)
at Module._compile (node:internal/modules/cjs/loader:1760:14)
at Object..js (node:internal/modules/cjs/loader:1892:10)
at Module.load (node:internal/modules/cjs/loader:1480:32)
at Module._load (node:internal/modules/cjs/loader:1299:12)
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:245:24)
at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)
at node:internal/main/run_main_module:33:47 {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: [
{
offset: '0x2ffec0',
slice1: '06000400000000000300000059ab0000',
slice2: '060004000000000003000000b8aa0000'
},
{
offset: '0x476eb0',
slice1: '00000059ab0000580701106100000000',
slice2: '000000b8aa0000580701106100000000'
}
],
expected: [],
operator: 'deepStrictEqual',
diff: 'simple'
}
Node.js v26.0.0-pre
--- stdout ---
0x0: Write magic 143da19
0x4: Write metadata
0x35: Write snapshot blob
0x258bfc: Write IsolateDataSerializeInfo
0x25a299: Write EnvSerializeInfo
0x25b1c0: Write CodeCacheInfo
0x0: Write magic 143da19
0x4: Write metadata
0x35: Write snapshot blob
0x258bfc: Write IsolateDataSerializeInfo
0x25a299: Write EnvSerializeInfo
0x25b1c0: Write CodeCacheInfo
Command: out/Release/node /home/runner/work/node-v8/node-v8/node/test/parallel/test-snapshot-reproducible.js
===
=== 1 tests failed
===
Failed tests:
out/Release/node /home/runner/work/node-v8/node-v8/node/test/parallel/test-snapshot-reproducible.js
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
targos commentedon Nov 15, 2025
Still happening.
Looking at https://github.com/nodejs/node-v8/actions/workflows/test-linux.yml:
targos commentedon Nov 15, 2025
I suspect v8/v8@db44401
It was relanded on Oct 28, reverted on Oct 29, and relanded again on Oct 30.
targos commentedon Dec 2, 2025
Still failing: https://github.com/nodejs/node-v8/actions/runs/19816998138/job/56770380628
joyeecheung commentedon Dec 2, 2025
Looks like the code cache reproducibility is altered by some recent change, going to take a look when I get back to a powerful enough build machine..
targos commentedon Dec 13, 2025
I bisected it to https://chromium-review.googlesource.com/c/v8/v8/+/7139418
joyeecheung commentedon Dec 16, 2025
Looks like it broke the code cache reproducibility somehow
targos commentedon Dec 17, 2025
It's more complex than this. If I revert that commit on the V8 14.4 update branch, the test still fails.
joyeecheung commentedon Dec 17, 2025
I noticed that the debug build has been failing on canary, this gyp change should fix it: https://github.com/joyeecheung/node/tree/fix-debug - where should I submit this?
joyeecheung commentedon Dec 17, 2025
Also opened nodejs/node#61101 to help diffing the snapshots
joyeecheung commentedon Dec 17, 2025
It seems the diffing object is a class boilerplate, or it appears to be its static_properties_template
I have a feeling that it might be the same as the bug fixed by https://chromium-review.googlesource.com/c/v8/v8/+/7252791, only that this happens to the descriptor array instead of transition array. Looknig..
joyeecheung commentedon Dec 17, 2025
I can fix it locally with this:
Going to upstream it
targos commentedon Dec 18, 2025
You can directly cherry-pick and push it to
canary-basejoyeecheung commentedon Dec 18, 2025
Done, thanks for the pointer
joyeecheung commentedon Dec 18, 2025
Upstream CL: https://chromium-review.googlesource.com/c/v8/v8/+/7271645
[runtime] zero-initialize descriptor array padding
deps: V8: cherry-pick 6eff00a342cb
targos commentedon Dec 22, 2025
Thanks for the investigation and fix @joyeecheung !
deps: V8: cherry-pick 6eff00a342cb