Permalink
Please
sign in to comment.
Browse files
tools: make code cache and snapshot deterministic
Use a fixed random seed to ensure that the generated sources are identical across runs. The final node binary still reseeds itself on start-up so there should be no security implications caused by predictable random numbers (e.g., `Math.random()`, ASLR, the hash seed, etc.) Fixes: #29108 PR-URL: #29142 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
- Loading branch information...
Showing
with
24 additions
and 0 deletions.
| @@ -0,0 +1,17 @@ | |||
| 'use strict'; | |||
|
|
|||
| require('../common'); | |||
| const assert = require('assert'); | |||
| const { spawnSync } = require('child_process'); | |||
|
|
|||
| const results = new Set(); | |||
| for (let i = 0; i < 10; i++) { | |||
| const result = spawnSync(process.execPath, ['-p', 'Math.random()']); | |||
| assert.strictEqual(result.status, 0); | |||
| results.add(result.stdout.toString()); | |||
| } | |||
| // It's theoretically possible if _very_ unlikely to see some duplicates. | |||
| // Therefore, don't expect that the size of the set is exactly 10 but do | |||
| // assume it's > 1 because if you get 10 duplicates in a row you should | |||
| // go out real quick and buy some lottery tickets, you lucky devil you! | |||
| assert(results.size > 1); | |||
0 comments on commit
c4f6077