-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Fix spurious SuperPMI asm diffs #86132
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
Conversation
Under ELT profiler stress, we encode the un-relocated address of the `DummyProfilerELTStub` function in the JIT codebase into the generated code. This can lead to spurious diffs if the address is different between base and diff JITs (which is likely). To avoid this, under SuperPMI replay (which we only know in DEBUG builds currently), use a fixed constant for this address. The code isn't executed during SuperPMI replay, so it doesn't need to be a valid code address.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsUnder ELT profiler stress, we encode the un-relocated address of the To avoid this, under SuperPMI replay (which we only know in DEBUG builds currently), use a fixed constant for this address. The code isn't executed during SuperPMI replay, so it doesn't need to be a valid code address.
|
|
@AndyAyersMS PTAL |
AndyAyersMS
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Huh, never knew we did anything like this.
Change LGTM.
|
Fixes #82164 |
Guess I'd forgotten about that issue. Your suggestion there sounds better, but this fix was maybe easier -- it just doesn't work for Release. |
Yeah agree this looks way easier. Seems fine since stress is debug-only anyway. Though we probably should also fix the test that enables "general" JitStress. This was probably exposed by #83771 that has a one-time switch around of what modes JitStress will enable, so it's likely the test is not testing what it means to anymore. (It's also likely it wasn't before, since stress modes have been added/removed before.) |
|
Looks like there are
Might not be super easy to identify the exact stress modes that reproed the issue originally. Edit: opened #86185 for this |
Under ELT profiler stress, we encode the un-relocated address of the
DummyProfilerELTStubfunction in the JIT codebase into the generated code. This can lead to spurious diffs if the address is different between base and diff JITs (which is likely).To avoid this, under SuperPMI replay (which we only know in DEBUG builds currently), use a fixed constant for this address. The code isn't executed during SuperPMI replay, so it doesn't need to be a valid code address.