Repository navigation
feat: add --deterministic-rng to make client randomness reproducible - #54
Conversation
Merging this PR will not alter performance
Comparing Footnotes
|
a3e75ea to
0687003
Compare
0687003 to
612a8c8
Compare
[High impact] The PR appears safe to merge with the stated platform limits. SummaryAdds opt-in reproducible randomness through
Previously accepted limits remain unchanged:
|
612a8c8 to
fd10c47
Compare
fd10c47 to
5f43405
Compare
5f43405 to
76c6a38
Compare
76c6a38 to
1228fd5
Compare
GuillaumeLagrange
left a comment
There was a problem hiding this comment.
LGTM, although thorough testing will be required
art049
left a comment
There was a problem hiding this comment.
Looks good to me on the approach although as mentionned in the changelog, we still miss some non deterministic randomness.
Would it be hard to cover /proc/sys/kernel/random/* devices?
For example /proc/sys/kernel/random/uuid might be widely used, pretty sure there are others
For clock_gettime definitely this will be a mess with certificates and a lot of other things so let's not deal with it now.
I think we need to cover arm64 for cpu level randomness.
Implemented support for some |
There was a problem hiding this comment.
OLGTM bearing this comment.
If we can make the overall change simpler and the same for x64 and arm it will be easier
534de53 to
58430f6
Compare
Add a fixed-seed splitmix64 PRNG and the --deterministic-rng=no|yes option (parsed in the early pass, since VG_(ii_create_image) runs before the main option pass). When on: - AT_RANDOM is filled from a dedicated stream instead of the kernel's bytes, so glibc's canary/pointer guard and Go's hash seed are stable. - Every client thread gets its own stream in VG_(alloc_ThreadState), keyed by a monotonic creation counter rather than the ThreadState slot, so the N-th created thread draws the same bytes whichever slot it reuses. Also update the --help snapshots.
…c PRNG With --deterministic-rng=yes, getrandom(2) is completed in the PRE wrapper from the calling thread's stream and never reaches the kernel. fds opened on /dev/random or /dev/urandom (resolved via /proc/self/fd) are tracked across open/openat/openat2, dup/dup2/dup3, fcntl F_DUPFD*, close and close_range; read, pread64, readv, preadv and preadv2 on a tracked fd are served the same way. Served paths clear SfMayBlock, as a PRE that completes the syscall must not keep it. All served paths go through ML_(rng_serve_read), which fails with EFAULT when the client buffer is not writable instead of faulting inside Valgrind. A newly opened device fd is only tracked if a zero-length read succeeds, so O_WRONLY and O_PATH fds keep the kernel's EBADF.
Route amd64 RDRAND and RDSEED helpers through a VEX callback backed by the calling thread's PRNG stream when --deterministic-rng is enabled, so both instructions always report success with reproducible values. CPUID and instruction decoding still follow the host: the instructions are only advertised and decoded where the host CPU supports them. With the option off, the helpers execute the host instructions as before. Test all operand widths, status flags, advancing streams and fresh threads on hosts with RDRAND and RDSEED.
Under --deterministic-rng=yes, print AT_RANDOM and bytes from getrandom, /dev/urandom via read, a dup'd fd and readv. Each source is drawn on a fresh, sequentially joined thread so the expected bytes do not depend on how much libc pulls from getrandom(2) before main(). Also check that the served paths keep the kernel's errors: EFAULT for a read-only buffer and EBADF for O_WRONLY and O_PATH device fds.
Describe the option in the core manual and the CodSpeed changelog: the covered randomness sources, per-thread streams, fork and exec behavior, and known limits (thread affinity of draws, Go map iteration order).
Cover /proc/sys/kernel/random/uuid and boot_id with typed RNG descriptor tracking. Draw UUIDv4 text from the calling thread stream and derive boot_id independently from the fixed seed. Run proc reads under the big lock and replace only returned bytes, retaining kernel offsets, short reads, EOF and errors. Snapshot vector reads before output can overwrite their iovecs. Add regression coverage and document the supported sources.
With --deterministic-rng, stop advertising RDRAND and RDSEED in CPUID so runtimes that check for them fall back to getrandom or /dev/urandom, which are already served from the PRNG. This matches arm64, where VEX does not support the hardware RNG instruction. Decoding still follows the host, so programs that execute the instructions without checking CPUID keep getting the seeded values. Refs COD-3957
58430f6 to
81d7365
Compare
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) | action | patch | `v5.6.0` → `v5.6.3` | | [github/codeql-action](https://redirect.github.com/github/codeql-action) | action | patch | `v4.39.1` → `v4.39.2` | --- ### Release Notes <details> <summary>CodSpeedHQ/action</summary> ### [`v5.6.3`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.3) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.1...v5.6.3) Bumps the CodSpeed runner to [v5.6.3](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.3), including [v5.6.2](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.2). ##### Highlights ##### Go benchmark times match `go test` `b.Loop()` benchmarks that stop and restart the timer inside an iteration now report all of their timed work. A round previously counted only the time since the most recent `StartTimer`, so results for those benchmarks will move. ##### Unsupported `go test` flags no longer fail the run `go test -p 1 ./... -bench .` used to strip `-p`, parse `1` as a package, and fail with `package 1 is not in std` after every benchmark had passed. Flags and their values are now dropped together. ##### Fixed randomness in CPU Simulation `getrandom()`, `/dev/urandom`, `AT_RANDOM` and hardware RNG instructions now return the same values on every CPU Simulation run, removing one source of run-to-run variance. ##### Fixes - Simulation: fix SIGILL on arm64 when programs read previously unsupported CPU ID registers or `TPIDRRO_EL0` ([#&open-telemetry#8203;59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59)). - Go: benchmarks that draw from the global `math/rand` now start from the same seed on every run, so their results no longer vary between runs ([#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/codspeed/pull/596)). ##### 🚀 Features - Seed Go's global math/rand deterministically ([#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/action/issues/596)) by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/runner/pull/596) - Always enable deterministic RNG ([#&open-telemetry#8203;600](https://redirect.github.com/CodSpeedHQ/action/issues/600)) by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [#&open-telemetry#8203;600](https://redirect.github.com/CodSpeedHQ/runner/pull/600) ##### 🐛 Bug Fixes - Bump go-runner to [1.4.0](https://redirect.github.com/CodSpeedHQ/codspeed-go/releases/tag/v1.4.0) ([#&open-telemetry#8203;605](https://redirect.github.com/CodSpeedHQ/action/issues/605)) by [@&open-telemetry#8203;adriencaccia](https://redirect.github.com/adriencaccia) in [#&open-telemetry#8203;605](https://redirect.github.com/CodSpeedHQ/runner/pull/605) - fix(cli): drop the value of unsupported go test flags by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#67](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/67) - fix(go-runner): count all timed segments of a b.Loop() iteration by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#69](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/69) ##### ⚙️ Internals - Bump pinned valgrind-codspeed to [3.26.0-0codspeed12](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/releases/tag/3.26.0-0codspeed12) ([#&open-telemetry#8203;604](https://redirect.github.com/CodSpeedHQ/action/issues/604)) by [@&open-telemetry#8203;adriencaccia](https://redirect.github.com/adriencaccia) in [#&open-telemetry#8203;604](https://redirect.github.com/CodSpeedHQ/runner/pull/604) - feat: add --deterministic-rng to make client randomness reproducible by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#54](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/54) - feat(vex): serve arm64 RNDR and RNDRRS with --deterministic-rng by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#56](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/56) - fix(vex): decode arm64 MRS of all EL0-visible ID registers by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> #### What's Changed - chore: bump runner version to 5.6.2 by [@&open-telemetry#8203;github-actions](https://redirect.github.com/github-actions)\[bot] in [#&open-telemetry#8203;255](https://redirect.github.com/CodSpeedHQ/action/pull/255) - chore: bump runner version to 5.6.3 by [@&open-telemetry#8203;github-actions](https://redirect.github.com/github-actions)\[bot] in [#&open-telemetry#8203;256](https://redirect.github.com/CodSpeedHQ/action/pull/256) **Full Changelog**: <CodSpeedHQ/action@v5.6.1...v5.6.3> ### [`v5.6.1`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.1) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.0...v5.6.1) Bumps the CodSpeed runner to [v5.6.1](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.1). ##### Fixes - Walltime: the runner no longer hangs after the benchmark exits when a Python process forks and leaves a corrupted perf jitdump ([#&open-telemetry#8203;599](https://redirect.github.com/CodSpeedHQ/codspeed/pull/599)) - Simulation: stop the libpython symlink warning from firing falsely ([#&open-telemetry#8203;594](https://redirect.github.com/CodSpeedHQ/codspeed/pull/594)) ##### 🐛 Bug Fixes - Stop the libpython symlink warning from firing falsely by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [#&open-telemetry#8203;594](https://redirect.github.com/CodSpeedHQ/runner/pull/594) ##### 💼 Other - Bump submodule to not loop on corrupted jit dump by [@&open-telemetry#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange) in [#&open-telemetry#8203;599](https://redirect.github.com/CodSpeedHQ/runner/pull/599) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> #### What's Changed - docs(examples): update the example workflows by [@&open-telemetry#8203;SuperMuel](https://redirect.github.com/SuperMuel) in [#&open-telemetry#8203;252](https://redirect.github.com/CodSpeedHQ/action/pull/252) - chore: bump runner version to 5.6.1 by [@&open-telemetry#8203;github-actions](https://redirect.github.com/github-actions)\[bot] in [#&open-telemetry#8203;254](https://redirect.github.com/CodSpeedHQ/action/pull/254) #### New Contributors - [@&open-telemetry#8203;SuperMuel](https://redirect.github.com/SuperMuel) made their first contribution in [#&open-telemetry#8203;252](https://redirect.github.com/CodSpeedHQ/action/pull/252) **Full Changelog**: <CodSpeedHQ/action@v5.6.0...v5.6.1> </details> <details> <summary>github/codeql-action</summary> ### [`v4.39.2`](https://redirect.github.com/github/codeql-action/releases/tag/v4.39.2) [Compare Source](https://redirect.github.com/github/codeql-action/compare/v4.39.1...v4.39.2) - Update default CodeQL bundle version to [2.27.4](https://redirect.github.com/github/codeql-action/releases/tag/codeql-bundle-v2.27.4). [#&open-telemetry#8203;4284](https://redirect.github.com/github/codeql-action/pull/4284) - *Upcoming breaking change*: CodeQL version 2.22.3 and earlier were discontinued on 16 October 2026 alongside GitHub Enterprise Server 3.18, and will be unsupported by the next minor release of the CodeQL Action. Added a deprecation warning for customers using these versions of CodeQL. [#&open-telemetry#8203;4266](https://redirect.github.com/github/codeql-action/pull/4266) - Starting with macOS 27 and Xcode 27, traced analyses are unsupported. See [this blog post for more information](https://github.blog/changelog/2026-10-19-codeql-changes-for-macos-27-xcode-27-and-swift-6-4/). The CodeQL Action will now try to identify if a workflow is about to perform a traced analysis on version 27 or above of macOS or Xcode. If so, the CodeQL Action will emit a corresponding warning that will also be visible on the [Tool Status Page](https://docs.github.com/en/code-security/how-tos/find-and-fix-code-vulnerabilities/manage-your-configuration/use-the-tools-status-page-for-code-scanning). This check will be rolled out following this release of the CodeQL Action. [#&open-telemetry#8203;4221](https://redirect.github.com/github/codeql-action/pull/4221) - The undocumented TRAP cache cleanup feature that could be enabled using the `CODEQL_ACTION_CLEANUP_TRAP_CACHES` environment variable has been removed, as announced in the release notes for CodeQL Action 4.35.2. The `analyze` Action now warns if this environment variable is set. If you used TRAP cache cleanup to limit Actions cache usage, we recommend disabling TRAP caching by passing the `trap-caching: false` input to the `init` Action. [#&open-telemetry#8203;4243](https://redirect.github.com/github/codeql-action/pull/4243) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "on tuesday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-telemetry/opentelemetry-collector). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMDIuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjIwNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZWJvdCJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) | action | patch | `v5.6.1` → `v5.6.3` | --- ### Release Notes <details> <summary>CodSpeedHQ/action</summary> ### [`v5.6.3`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.3) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.1...v5.6.3) Bumps the CodSpeed runner to [v5.6.3](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.3), including [v5.6.2](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.2). ##### Highlights ##### Go benchmark times match `go test` `b.Loop()` benchmarks that stop and restart the timer inside an iteration now report all of their timed work. A round previously counted only the time since the most recent `StartTimer`, so results for those benchmarks will move. ##### Unsupported `go test` flags no longer fail the run `go test -p 1 ./... -bench .` used to strip `-p`, parse `1` as a package, and fail with `package 1 is not in std` after every benchmark had passed. Flags and their values are now dropped together. ##### Fixed randomness in CPU Simulation `getrandom()`, `/dev/urandom`, `AT_RANDOM` and hardware RNG instructions now return the same values on every CPU Simulation run, removing one source of run-to-run variance. ##### Fixes - Simulation: fix SIGILL on arm64 when programs read previously unsupported CPU ID registers or `TPIDRRO_EL0` ([#&open-telemetry#8203;59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59)). - Go: benchmarks that draw from the global `math/rand` now start from the same seed on every run, so their results no longer vary between runs ([#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/codspeed/pull/596)). ##### 🚀 Features - Seed Go's global math/rand deterministically ([#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/action/issues/596)) by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/runner/pull/596) - Always enable deterministic RNG ([#&open-telemetry#8203;600](https://redirect.github.com/CodSpeedHQ/action/issues/600)) by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [#&open-telemetry#8203;600](https://redirect.github.com/CodSpeedHQ/runner/pull/600) ##### 🐛 Bug Fixes - Bump go-runner to [1.4.0](https://redirect.github.com/CodSpeedHQ/codspeed-go/releases/tag/v1.4.0) ([#&open-telemetry#8203;605](https://redirect.github.com/CodSpeedHQ/action/issues/605)) by [@&open-telemetry#8203;adriencaccia](https://redirect.github.com/adriencaccia) in [#&open-telemetry#8203;605](https://redirect.github.com/CodSpeedHQ/runner/pull/605) - fix(cli): drop the value of unsupported go test flags by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#67](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/67) - fix(go-runner): count all timed segments of a b.Loop() iteration by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#69](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/69) ##### ⚙️ Internals - Bump pinned valgrind-codspeed to [3.26.0-0codspeed12](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/releases/tag/3.26.0-0codspeed12) ([#&open-telemetry#8203;604](https://redirect.github.com/CodSpeedHQ/action/issues/604)) by [@&open-telemetry#8203;adriencaccia](https://redirect.github.com/adriencaccia) in [#&open-telemetry#8203;604](https://redirect.github.com/CodSpeedHQ/runner/pull/604) - feat: add --deterministic-rng to make client randomness reproducible by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#54](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/54) - feat(vex): serve arm64 RNDR and RNDRRS with --deterministic-rng by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#56](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/56) - fix(vex): decode arm64 MRS of all EL0-visible ID registers by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> #### What's Changed - chore: bump runner version to 5.6.2 by [@&open-telemetry#8203;github-actions](https://redirect.github.com/github-actions)\[bot] in [#&open-telemetry#8203;255](https://redirect.github.com/CodSpeedHQ/action/pull/255) - chore: bump runner version to 5.6.3 by [@&open-telemetry#8203;github-actions](https://redirect.github.com/github-actions)\[bot] in [#&open-telemetry#8203;256](https://redirect.github.com/CodSpeedHQ/action/pull/256) **Full Changelog**: <CodSpeedHQ/action@v5.6.1...v5.6.3> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-telemetry/opentelemetry-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMDQuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjIwNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJTa2lwIENoYW5nZWxvZyIsImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) | action | patch | `v5.6.1` → `v5.6.3` | --- ### Release Notes <details> <summary>CodSpeedHQ/action</summary> ### [`v5.6.3`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.3) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.1...v5.6.3) Bumps the CodSpeed runner to [v5.6.3](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.3), including [v5.6.2](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.2). ##### Highlights ##### Go benchmark times match `go test` `b.Loop()` benchmarks that stop and restart the timer inside an iteration now report all of their timed work. A round previously counted only the time since the most recent `StartTimer`, so results for those benchmarks will move. ##### Unsupported `go test` flags no longer fail the run `go test -p 1 ./... -bench .` used to strip `-p`, parse `1` as a package, and fail with `package 1 is not in std` after every benchmark had passed. Flags and their values are now dropped together. ##### Fixed randomness in CPU Simulation `getrandom()`, `/dev/urandom`, `AT_RANDOM` and hardware RNG instructions now return the same values on every CPU Simulation run, removing one source of run-to-run variance. ##### Fixes - Simulation: fix SIGILL on arm64 when programs read previously unsupported CPU ID registers or `TPIDRRO_EL0` ([#&open-telemetry#8203;59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59)). - Go: benchmarks that draw from the global `math/rand` now start from the same seed on every run, so their results no longer vary between runs ([#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/codspeed/pull/596)). ##### 🚀 Features - Seed Go's global math/rand deterministically ([#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/action/issues/596)) by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [#&open-telemetry#8203;596](https://redirect.github.com/CodSpeedHQ/runner/pull/596) - Always enable deterministic RNG ([#&open-telemetry#8203;600](https://redirect.github.com/CodSpeedHQ/action/issues/600)) by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [#&open-telemetry#8203;600](https://redirect.github.com/CodSpeedHQ/runner/pull/600) ##### 🐛 Bug Fixes - Bump go-runner to [1.4.0](https://redirect.github.com/CodSpeedHQ/codspeed-go/releases/tag/v1.4.0) ([#&open-telemetry#8203;605](https://redirect.github.com/CodSpeedHQ/action/issues/605)) by [@&open-telemetry#8203;adriencaccia](https://redirect.github.com/adriencaccia) in [#&open-telemetry#8203;605](https://redirect.github.com/CodSpeedHQ/runner/pull/605) - fix(cli): drop the value of unsupported go test flags by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#67](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/67) - fix(go-runner): count all timed segments of a b.Loop() iteration by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#69](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/69) ##### ⚙️ Internals - Bump pinned valgrind-codspeed to [3.26.0-0codspeed12](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/releases/tag/3.26.0-0codspeed12) ([#&open-telemetry#8203;604](https://redirect.github.com/CodSpeedHQ/action/issues/604)) by [@&open-telemetry#8203;adriencaccia](https://redirect.github.com/adriencaccia) in [#&open-telemetry#8203;604](https://redirect.github.com/CodSpeedHQ/runner/pull/604) - feat: add --deterministic-rng to make client randomness reproducible by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#54](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/54) - feat(vex): serve arm64 RNDR and RNDRRS with --deterministic-rng by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#56](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/56) - fix(vex): decode arm64 MRS of all EL0-visible ID registers by [@&open-telemetry#8203;not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> #### What's Changed - chore: bump runner version to 5.6.2 by [@&open-telemetry#8203;github-actions](https://redirect.github.com/github-actions)\[bot] in [#&open-telemetry#8203;255](https://redirect.github.com/CodSpeedHQ/action/pull/255) - chore: bump runner version to 5.6.3 by [@&open-telemetry#8203;github-actions](https://redirect.github.com/github-actions)\[bot] in [#&open-telemetry#8203;256](https://redirect.github.com/CodSpeedHQ/action/pull/256) **Full Changelog**: <CodSpeedHQ/action@v5.6.1...v5.6.3> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/open-telemetry/opentelemetry-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMDQuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjIwNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJTa2lwIENoYW5nZWxvZyIsImRlcGVuZGVuY2llcyJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) | action | patch | `v5.6.0` → `v5.6.3` | --- ### Release Notes <details> <summary>CodSpeedHQ/action</summary> ### [`v5.6.3`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.3) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.1...v5.6.3) Bumps the CodSpeed runner to [v5.6.3](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.3), including [v5.6.2](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.2). ##### Highlights ##### Go benchmark times match `go test` `b.Loop()` benchmarks that stop and restart the timer inside an iteration now report all of their timed work. A round previously counted only the time since the most recent `StartTimer`, so results for those benchmarks will move. ##### Unsupported `go test` flags no longer fail the run `go test -p 1 ./... -bench .` used to strip `-p`, parse `1` as a package, and fail with `package 1 is not in std` after every benchmark had passed. Flags and their values are now dropped together. ##### Fixed randomness in CPU Simulation `getrandom()`, `/dev/urandom`, `AT_RANDOM` and hardware RNG instructions now return the same values on every CPU Simulation run, removing one source of run-to-run variance. ##### Fixes - Simulation: fix SIGILL on arm64 when programs read previously unsupported CPU ID registers or `TPIDRRO_EL0` ([#​59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59)). - Go: benchmarks that draw from the global `math/rand` now start from the same seed on every run, so their results no longer vary between runs ([#​596](https://redirect.github.com/CodSpeedHQ/codspeed/pull/596)). ##### 🚀 Features - Seed Go's global math/rand deterministically ([#​596](https://redirect.github.com/CodSpeedHQ/action/issues/596)) by [@​not-matthias](https://redirect.github.com/not-matthias) in [#​596](https://redirect.github.com/CodSpeedHQ/runner/pull/596) - Always enable deterministic RNG ([#​600](https://redirect.github.com/CodSpeedHQ/action/issues/600)) by [@​not-matthias](https://redirect.github.com/not-matthias) in [#​600](https://redirect.github.com/CodSpeedHQ/runner/pull/600) ##### 🐛 Bug Fixes - Bump go-runner to [1.4.0](https://redirect.github.com/CodSpeedHQ/codspeed-go/releases/tag/v1.4.0) ([#​605](https://redirect.github.com/CodSpeedHQ/action/issues/605)) by [@​adriencaccia](https://redirect.github.com/adriencaccia) in [#​605](https://redirect.github.com/CodSpeedHQ/runner/pull/605) - fix(cli): drop the value of unsupported go test flags by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#67](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/67) - fix(go-runner): count all timed segments of a b.Loop() iteration by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#69](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/69) ##### ⚙️ Internals - Bump pinned valgrind-codspeed to [3.26.0-0codspeed12](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/releases/tag/3.26.0-0codspeed12) ([#​604](https://redirect.github.com/CodSpeedHQ/action/issues/604)) by [@​adriencaccia](https://redirect.github.com/adriencaccia) in [#​604](https://redirect.github.com/CodSpeedHQ/runner/pull/604) - feat: add --deterministic-rng to make client randomness reproducible by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#54](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/54) - feat(vex): serve arm64 RNDR and RNDRRS with --deterministic-rng by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#56](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/56) - fix(vex): decode arm64 MRS of all EL0-visible ID registers by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> #### What's Changed - chore: bump runner version to 5.6.2 by [@​github-actions](https://redirect.github.com/github-actions)\[bot] in [#​255](https://redirect.github.com/CodSpeedHQ/action/pull/255) - chore: bump runner version to 5.6.3 by [@​github-actions](https://redirect.github.com/github-actions)\[bot] in [#​256](https://redirect.github.com/CodSpeedHQ/action/pull/256) **Full Changelog**: <CodSpeedHQ/action@v5.6.1...v5.6.3> ### [`v5.6.1`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.1) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.0...v5.6.1) Bumps the CodSpeed runner to [v5.6.1](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.1). ##### Fixes - Walltime: the runner no longer hangs after the benchmark exits when a Python process forks and leaves a corrupted perf jitdump ([#​599](https://redirect.github.com/CodSpeedHQ/codspeed/pull/599)) - Simulation: stop the libpython symlink warning from firing falsely ([#​594](https://redirect.github.com/CodSpeedHQ/codspeed/pull/594)) ##### 🐛 Bug Fixes - Stop the libpython symlink warning from firing falsely by [@​not-matthias](https://redirect.github.com/not-matthias) in [#​594](https://redirect.github.com/CodSpeedHQ/runner/pull/594) ##### 💼 Other - Bump submodule to not loop on corrupted jit dump by [@​GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange) in [#​599](https://redirect.github.com/CodSpeedHQ/runner/pull/599) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> #### What's Changed - docs(examples): update the example workflows by [@​SuperMuel](https://redirect.github.com/SuperMuel) in [#​252](https://redirect.github.com/CodSpeedHQ/action/pull/252) - chore: bump runner version to 5.6.1 by [@​github-actions](https://redirect.github.com/github-actions)\[bot] in [#​254](https://redirect.github.com/CodSpeedHQ/action/pull/254) #### New Contributors - [@​SuperMuel](https://redirect.github.com/SuperMuel) made their first contribution in [#​252](https://redirect.github.com/CodSpeedHQ/action/pull/252) **Full Changelog**: <CodSpeedHQ/action@v5.6.0...v5.6.1> </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Madrid) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [x] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/gigabit-clowns/rexlib-metadata). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMjAuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjIyMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Martin Salinas <ssalinasmartin@gmail.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) | action | patch | `v5.6.1` → `v5.6.3` | --- ### Release Notes <details> <summary>CodSpeedHQ/action</summary> ### [`v5.6.3`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.3) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.1...v5.6.3) Bumps the CodSpeed runner to [v5.6.3](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.3), including [v5.6.2](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.2). ##### Highlights ##### Go benchmark times match `go test` `b.Loop()` benchmarks that stop and restart the timer inside an iteration now report all of their timed work. A round previously counted only the time since the most recent `StartTimer`, so results for those benchmarks will move. ##### Unsupported `go test` flags no longer fail the run `go test -p 1 ./... -bench .` used to strip `-p`, parse `1` as a package, and fail with `package 1 is not in std` after every benchmark had passed. Flags and their values are now dropped together. ##### Fixed randomness in CPU Simulation `getrandom()`, `/dev/urandom`, `AT_RANDOM` and hardware RNG instructions now return the same values on every CPU Simulation run, removing one source of run-to-run variance. ##### Fixes - Simulation: fix SIGILL on arm64 when programs read previously unsupported CPU ID registers or `TPIDRRO_EL0` ([#​59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59)). - Go: benchmarks that draw from the global `math/rand` now start from the same seed on every run, so their results no longer vary between runs ([#​596](https://redirect.github.com/CodSpeedHQ/codspeed/pull/596)). ##### 🚀 Features - Seed Go's global math/rand deterministically ([#​596](https://redirect.github.com/CodSpeedHQ/action/issues/596)) by [@​not-matthias](https://redirect.github.com/not-matthias) in [#​596](https://redirect.github.com/CodSpeedHQ/runner/pull/596) - Always enable deterministic RNG ([#​600](https://redirect.github.com/CodSpeedHQ/action/issues/600)) by [@​not-matthias](https://redirect.github.com/not-matthias) in [#​600](https://redirect.github.com/CodSpeedHQ/runner/pull/600) ##### 🐛 Bug Fixes - Bump go-runner to [1.4.0](https://redirect.github.com/CodSpeedHQ/codspeed-go/releases/tag/v1.4.0) ([#​605](https://redirect.github.com/CodSpeedHQ/action/issues/605)) by [@​adriencaccia](https://redirect.github.com/adriencaccia) in [#​605](https://redirect.github.com/CodSpeedHQ/runner/pull/605) - fix(cli): drop the value of unsupported go test flags by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#67](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/67) - fix(go-runner): count all timed segments of a b.Loop() iteration by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#69](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/69) ##### ⚙️ Internals - Bump pinned valgrind-codspeed to [3.26.0-0codspeed12](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/releases/tag/3.26.0-0codspeed12) ([#​604](https://redirect.github.com/CodSpeedHQ/action/issues/604)) by [@​adriencaccia](https://redirect.github.com/adriencaccia) in [#​604](https://redirect.github.com/CodSpeedHQ/runner/pull/604) - feat: add --deterministic-rng to make client randomness reproducible by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#54](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/54) - feat(vex): serve arm64 RNDR and RNDRRS with --deterministic-rng by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#56](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/56) - fix(vex): decode arm64 MRS of all EL0-visible ID registers by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> #### What's Changed - chore: bump runner version to 5.6.2 by [@​github-actions](https://redirect.github.com/github-actions)\[bot] in [#​255](https://redirect.github.com/CodSpeedHQ/action/pull/255) - chore: bump runner version to 5.6.3 by [@​github-actions](https://redirect.github.com/github-actions)\[bot] in [#​256](https://redirect.github.com/CodSpeedHQ/action/pull/256) **Full Changelog**: <CodSpeedHQ/action@v5.6.1...v5.6.3> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/spiraldb/onpair). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMjAuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjIyMC4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2ZWxvcCIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvY2hvcmUiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) | action | patch | `v5.6.1` → `v5.6.3` | --- ### Release Notes <details> <summary>CodSpeedHQ/action</summary> ### [`v5.6.3`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v5.6.3) [Compare Source](https://redirect.github.com/CodSpeedHQ/action/compare/v5.6.1...v5.6.3) Bumps the CodSpeed runner to [v5.6.3](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.3), including [v5.6.2](https://redirect.github.com/CodSpeedHQ/codspeed/releases/tag/v5.6.2). ##### Highlights ##### Go benchmark times match `go test` `b.Loop()` benchmarks that stop and restart the timer inside an iteration now report all of their timed work. A round previously counted only the time since the most recent `StartTimer`, so results for those benchmarks will move. ##### Unsupported `go test` flags no longer fail the run `go test -p 1 ./... -bench .` used to strip `-p`, parse `1` as a package, and fail with `package 1 is not in std` after every benchmark had passed. Flags and their values are now dropped together. ##### Fixed randomness in CPU Simulation `getrandom()`, `/dev/urandom`, `AT_RANDOM` and hardware RNG instructions now return the same values on every CPU Simulation run, removing one source of run-to-run variance. ##### Fixes - Simulation: fix SIGILL on arm64 when programs read previously unsupported CPU ID registers or `TPIDRRO_EL0` ([#​59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59)). - Go: benchmarks that draw from the global `math/rand` now start from the same seed on every run, so their results no longer vary between runs ([#​596](https://redirect.github.com/CodSpeedHQ/codspeed/pull/596)). ##### 🚀 Features - Seed Go's global math/rand deterministically ([#​596](https://redirect.github.com/CodSpeedHQ/action/issues/596)) by [@​not-matthias](https://redirect.github.com/not-matthias) in [#​596](https://redirect.github.com/CodSpeedHQ/runner/pull/596) - Always enable deterministic RNG ([#​600](https://redirect.github.com/CodSpeedHQ/action/issues/600)) by [@​not-matthias](https://redirect.github.com/not-matthias) in [#​600](https://redirect.github.com/CodSpeedHQ/runner/pull/600) ##### 🐛 Bug Fixes - Bump go-runner to [1.4.0](https://redirect.github.com/CodSpeedHQ/codspeed-go/releases/tag/v1.4.0) ([#​605](https://redirect.github.com/CodSpeedHQ/action/issues/605)) by [@​adriencaccia](https://redirect.github.com/adriencaccia) in [#​605](https://redirect.github.com/CodSpeedHQ/runner/pull/605) - fix(cli): drop the value of unsupported go test flags by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#67](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/67) - fix(go-runner): count all timed segments of a b.Loop() iteration by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/codspeed-go#69](https://redirect.github.com/CodSpeedHQ/codspeed-go/pull/69) ##### ⚙️ Internals - Bump pinned valgrind-codspeed to [3.26.0-0codspeed12](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/releases/tag/3.26.0-0codspeed12) ([#​604](https://redirect.github.com/CodSpeedHQ/action/issues/604)) by [@​adriencaccia](https://redirect.github.com/adriencaccia) in [#​604](https://redirect.github.com/CodSpeedHQ/runner/pull/604) - feat: add --deterministic-rng to make client randomness reproducible by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#54](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/54) - feat(vex): serve arm64 RNDR and RNDRRS with --deterministic-rng by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#56](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/56) - fix(vex): decode arm64 MRS of all EL0-visible ID registers by [@​not-matthias](https://redirect.github.com/not-matthias) in [CodSpeedHQ/valgrind-codspeed#59](https://redirect.github.com/CodSpeedHQ/valgrind-codspeed/pull/59) **Full Runner Changelog**: <https://github.com/CodSpeedHQ/codspeed/blob/main/CHANGELOG.md> ##### What's Changed - chore: bump runner version to 5.6.2 by [@​github-actions](https://redirect.github.com/github-actions)\[bot] in [#​255](https://redirect.github.com/CodSpeedHQ/action/pull/255) - chore: bump runner version to 5.6.3 by [@​github-actions](https://redirect.github.com/github-actions)\[bot] in [#​256](https://redirect.github.com/CodSpeedHQ/action/pull/256) **Full Changelog**: <CodSpeedHQ/action@v5.6.1...v5.6.3> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/jan-mue/pycodium). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMjIuNSIsInVwZGF0ZWRJblZlciI6IjQ0LjIyMi41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
TLDR: Hash-seed randomness (Rust
RandomState, CPython hash seed, glibc canary) changes bucket collisions and probe lengths between runs, which shows up as instruction-count noise.--deterministic-rng=yesserves every randomness source a client can observe from a fixed-seed PRNG (Linux only; time, pid and tid are deliberately untouched).Core
AT_RANDOMauxv bytes come from a dedicated PRNG stream.ThreadStateslot), so the N-th created thread draws the same bytes whichever slot it reuses.Syswrap
getrandom(2)completes in the PRE wrapper and never enters the kernel./dev/randomand/dev/urandom(resolved through/proc/self/fd) are tracked acrossopen*,dup*,fcntl F_DUPFD*,closeandclose_range;read,pread64,readv,preadv,preadv2on them are served from the PRNG.EFAULT, and a device fd is only tracked if a zero-length read succeeds, soO_WRONLYandO_PATHfds keep the kernel'sEBADF.SfMayBlock; a PRE that completes a syscall must not keep it (syswrap-main.c:2440).VEX (amd64)
RDRAND/RDSEED, they draw from the calling thread's stream through a newLibVEX_SetRandom32callback and always report success.Review notes
VG_(ii_create_image)writesAT_RANDOMbefore the main pass.--trace-children=yeseach exec'd program restarts from the seed.callgrind/tests/deterministic_rngpins the bytes per source, each draw on a fresh thread so libc's startupgetrandomcalls cannot shift the expectation, and checks theEFAULT/EBADFcases.none/tests/amd64/deterministic_rngcoversRDRAND/RDSEEDfor every operand width, flags, stream advance and fresh threads; it only runs on hosts with both instructions.