-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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/7.0] [mono][s390x] Fix wrong implementation of OP_CHECK_THIS #76920
Conversation
* Only access a single byte in memory for OP_CHECK_THIS * Remove unnecessary ltgr instruction * Fixes #76915
@akoeplinger please send the email to Tactics requesting approval if you haven't done so. @mmitche Do we still have runway to take this for GA? |
This isn't critical for 7.0 GA, we can take it as part of normal servicing. |
@akoeplinger can you please take a look at the CI failures? Let me know if this is good to merge (pending Tactics approval, of course). |
The failures are unrelated. |
Approved only if this can be merged by 10/13/2022 EOD |
CI failures investigated as unrelated. Approved by Tactics. Signed off. Ready to merge. |
Backport of #76916 to release/7.0
/cc @akoeplinger @uweigand
Customer Impact
There is a Mono codegen bug on
s390x
.The accesses that span the page boundary turn out to be emitted from the implementation of the
OP_CHECK_THIS
opcode. This is intended to perform a memory access, just to see if this triggers a segmentation fault if the incoming pointer was invalid. However, theOP_CHECK_THIS
implementation currently always emits an 8-byte memory access - potentially resulting in a false positive if the pointer was valid, but only to access less than 8 bytes.This caused crashes in the
SpanHelpers.IndexOfValueType
before the code was reverted to an earlier version, but it could be hit by user code as well.We don't need it for 7.0 GA release as it only triggers in certain cases. If we can't make the 7.0 GA, please include in the first 7.x servicing release.
Testing
Manual testing.
Risk
Very low, only affects s390x architecture.
IMPORTANT: Is this backport for a servicing release? If so and this change touches code that ships in a NuGet package, please make certain that you have added any necessary package authoring and gotten it explicitly reviewed.