-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[release/8.0] JIT: add missing xarch RMW case #92293
[release/8.0] JIT: add missing xarch RMW case #92293
Conversation
Handle the case where we're indirectly updating a local with a value that is not a constant. Fixes #92218.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsBackport of #92252 to release/8.0 /cc @AndyAyersMS Customer ImpactTestingRiskIMPORTANT: If this backport is for a servicing release, please verify that:
|
@dotnet/jit-contrib PTAL |
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.
approved. we will take for consideration in 8.0.x
The snap has been done, so if this is meant to go to RC2, please retarget the PR to release/8.0-rc2 . In case you don't know, you can edit the PR title and you'll see the option to retarget the PR branch. |
Yes, this is for RC2. Updated per your info -- thanks! |
Approved by Tactics via email. The RC2 branch had a generalized failure for which we just merged a fix, so I updated this branch to ensure we have a green CI before merging. |
Backport of #92252 to release/8.0
Fixes issue #92218
/cc @AndyAyersMS
Customer Impact
Unexpected null reference exception. Reported by customer via #92218 after testing .NET 8 RC1 on their app. This is a regression from .NET 7.
This issue might be hard for impacted customers to understand and work around.
Testing
Verified fix on customer-supplied test case. No SPMI diffs, passes jitstress.
Risk
Low. The underlying problem is a missing case in the "xarch" (x86/x64) code generator, in code where the user manages to indirectly modify one of the locals in a method via a "read modify write" update, eg
Current JIT behavior can lose track of the address to update, effectively turning this into silent bad code:
which when executed will cause a NRE.
The fix adds support for this missing case.