Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use rr-safe nopl; rdtsc sequence #50975

Merged
merged 1 commit into from
Aug 20, 2023
Merged

Use rr-safe nopl; rdtsc sequence #50975

merged 1 commit into from
Aug 20, 2023

Conversation

Keno
Copy link
Member

@Keno Keno commented Aug 19, 2023

When running under rr, it needs to patch out rdtsc to record the values returned. If this is not possible, rr falls back to an expensive signal-based emulation. As of rr master, a specific nopl; rdtsc sequence may be used to guarantee that rdtsc patching is always possible. Use this sequence for uses of rdtsc in our runtime.

Keno added a commit to JuliaPackaging/Yggdrasil that referenced this pull request Aug 19, 2023
Several users have reported masssive slowdowns to rr record/replay
in packages that have the tracy client loaded. The issue turns out
to be an unlucky false positive in an rr heuristic that determines
the patchability of `rdtsc`. In rr master, it is possible to guarantee
patchability by using a specific `nopl; rdtsc` sequence. Add a patch
to tracy to do just that.

See also
rr-debugger/rr#3580
JuliaLang/julia#50975
Keno added a commit to JuliaPackaging/Yggdrasil that referenced this pull request Aug 19, 2023
Several users have reported masssive slowdowns to rr record/replay
in packages that have the tracy client loaded. The issue turns out
to be an unlucky false positive in an rr heuristic that determines
the patchability of `rdtsc`. In rr master, it is possible to guarantee
patchability by using a specific `nopl; rdtsc` sequence. Add a patch
to tracy to do just that.

See also
rr-debugger/rr#3580
JuliaLang/julia#50975
Keno added a commit to JuliaPackaging/Yggdrasil that referenced this pull request Aug 19, 2023
Several users have reported masssive slowdowns to rr record/replay
in packages that have the tracy client loaded. The issue turns out
to be an unlucky false positive in an rr heuristic that determines
the patchability of `rdtsc`. In rr master, it is possible to guarantee
patchability by using a specific `nopl; rdtsc` sequence. Add a patch
to tracy to do just that.

See also
rr-debugger/rr#3580
JuliaLang/julia#50975
Keno added a commit to JuliaPackaging/Yggdrasil that referenced this pull request Aug 19, 2023
Several users have reported masssive slowdowns to rr record/replay
in packages that have the tracy client loaded. The issue turns out
to be an unlucky false positive in an rr heuristic that determines
the patchability of `rdtsc`. In rr master, it is possible to guarantee
patchability by using a specific `nopl; rdtsc` sequence. Add a patch
to tracy to do just that.

See also
rr-debugger/rr#3580
JuliaLang/julia#50975
When running under `rr`, it needs to patch out `rdtsc` to record the values returned.
If this is not possible, `rr` falls back to an expensive signal-based emulation.
As of rr master, a specific `nopl; rdtsc` sequence may be used to guarantee that
`rdtsc` patching is always possible. Use this sequence for uses of rdtsc in our
runtime.
Keno added a commit to JuliaPackaging/Yggdrasil that referenced this pull request Aug 19, 2023
Several users have reported masssive slowdowns to rr record/replay
in packages that have the tracy client loaded. The issue turns out
to be an unlucky false positive in an rr heuristic that determines
the patchability of `rdtsc`. In rr master, it is possible to guarantee
patchability by using a specific `nopl; rdtsc` sequence. Add a patch
to tracy to do just that.

See also
rr-debugger/rr#3580
JuliaLang/julia#50975
@Keno Keno merged commit ce3f97c into master Aug 20, 2023
@Keno Keno deleted the kf/noplrdtsc branch August 20, 2023 01:36
Keno added a commit to JuliaPackaging/Yggdrasil that referenced this pull request Aug 20, 2023
Several users have reported masssive slowdowns to rr record/replay
in packages that have the tracy client loaded. The issue turns out
to be an unlucky false positive in an rr heuristic that determines
the patchability of `rdtsc`. In rr master, it is possible to guarantee
patchability by using a specific `nopl; rdtsc` sequence. Add a patch
to tracy to do just that.

See also
rr-debugger/rr#3580
JuliaLang/julia#50975
@gbaraldi
Copy link
Member

Should we backport this ?

@gbaraldi gbaraldi added the backport 1.10 Change should be backported to the 1.10 release label Sep 18, 2023
KristofferC pushed a commit that referenced this pull request Oct 3, 2023
When running under `rr`, it needs to patch out `rdtsc` to record the
values returned. If this is not possible, `rr` falls back to an
expensive signal-based emulation. As of rr master, a specific `nopl;
rdtsc` sequence may be used to guarantee that `rdtsc` patching is always
possible. Use this sequence for uses of rdtsc in our runtime.

(cherry picked from commit ce3f97c)
@KristofferC KristofferC mentioned this pull request Oct 3, 2023
31 tasks
KristofferC added a commit that referenced this pull request Nov 2, 2023
Backported PRs:
- [x] #50932 <!-- types: fix hash values of Vararg -->
- [x] #50975 <!-- Use rr-safe `nopl; rdtsc` sequence -->
- [x] #50989 <!-- fix incorrect results in `expm1(::Union{Float16,
Float32})` -->
- [x] #51284 <!-- Avoid infinite loop when doing SIGTRAP in arm64-apple
-->
- [x] #51332 <!-- Add s4 field to Xoshiro -->
- [x] #51397 <!-- call Pkg precompile hook in latest world -->
- [x] #51405 <!-- Remove fallback that assigns a module to inlined
frames. -->
- [x] #51491 <!-- Throw clearer ArgumentError for strip with two string
args -->
- [x] #51531 <!-- fix `_tryonce_download_from_cache` (busybox.exe
download error) -->
- [x] #51541 <!-- Fix string index error in tab completion code -->
- [x] #51530 <!-- Don't mark nonlocal symbols as hidden -->
- [x] #51557 <!-- Fix last startup & shutdown precompiles -->
- [x] #51512 <!-- avoid limiting Type{Any} to Type -->
- [x] #51595 <!-- reset `maxprobe` on `empty!` -->
- [x] #51582 <!-- Aggressive constprop in LinearAlgebra.wrap -->
- [x] #51592 <!-- correctly track element pointer in heap snapshot -->
- [x] #51326 <!-- complete false & true more generally as vals -->
- [x] #51376 <!-- make `hash(::Xoshiro)` compatible with `==` -->
- [x] #51557 <!-- Fix last startup & shutdown precompiles -->
- [x] #51845 
- [x] #51840 
- [x] #50663 <!-- Fix Expr(:loopinfo) codegen -->
- [x] #51863 <!-- LLVM 15.0.7-9 -->

Contains multiple commits, manual intervention needed:

- [ ] #51035 <!-- refactor GC scanning code to reflect jl_binding_t are
now first class -->
- [ ] #51092 <!-- inference: fix bad effects for recursion -->

Non-merged PRs with backport label:
- [ ] #51479 <!-- prevent code loading from lookin in the versioned
environment when building Julia -->
- [ ] #51414 <!-- improvements on GC scheduler shutdown -->
- [ ] #51366 <!-- Handle infix operators in REPL completion -->
- [ ] #50919 <!-- Code loading: do the "skipping mtime check for stdlib"
check regardless of the value of `ispath(f)` -->
- [ ] #50824 <!-- Add some aliasing warnings to docstrings for mutating
functions in Base -->
- [ ] #49805 <!-- Limit TimeType subtraction to AbstractDateTime -->
@KristofferC KristofferC removed the backport 1.10 Change should be backported to the 1.10 release label Nov 2, 2023
nalimilan pushed a commit that referenced this pull request Nov 5, 2023
When running under `rr`, it needs to patch out `rdtsc` to record the
values returned. If this is not possible, `rr` falls back to an
expensive signal-based emulation. As of rr master, a specific `nopl;
rdtsc` sequence may be used to guarantee that `rdtsc` patching is always
possible. Use this sequence for uses of rdtsc in our runtime.

(cherry picked from commit ce3f97c)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants