Automatic ASLR disablement#66
Open
LebedevRI wants to merge 1 commit into
Open
Conversation
Open
a971625 to
2b95212
Compare
While ASLR is a useful security hardening feature, it introduces unreproducible noise into benchmarks, and we really really really don't want any noise, especially easily avoidable one. Unless prevented by some other security hardening, we can disable ASLR for the current process, and restart it, thus eliminating this noise. This implementation matches the implementation that has been contributed by me to google benchmark, it is battle-tested and is known to be correct. X-Ref: google/benchmark#1978 X-Ref: google/benchmark#461
lemmih
reviewed
May 25, 2026
| "async_tokio", | ||
| ] | ||
| default = ["rayon", "plotters", "cargo_bench_support"] | ||
| default = ["rayon", "plotters", "cargo_bench_support", "deaslr"] |
Contributor
There was a problem hiding this comment.
Would you be okay with not making this a default feature? If the feature works well and doesn't cause problems, then we could include it as default in a future release.
lemmih
reviewed
May 25, 2026
Comment on lines
+12
to
+19
| ### Added | ||
|
|
||
| - Add support for automatic disablement of ASLR security hardening feature | ||
| for the benchmark process, thus eliminating some execution-to-execution | ||
| performance variance. | ||
| This is as an optional feature, labelled `deaslr`. | ||
| Requires `nix` crate. | ||
|
|
Contributor
There was a problem hiding this comment.
This needs to be under "unreleased".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While ASLR is a useful security hardening feature, it introduces unreproducible noise into benchmarks, and we really really really don't want any noise,
especially easily avoidable one.
Unless prevented by some other security hardening, we can disable ASLR for the current process,
and restart it, thus eliminating this noise.
This implementation matches the implementation
that has been contributed by me to google benchmark, it is battle-tested and is known to be correct.
X-Ref: google/benchmark#1978
X-Ref: google/benchmark#461