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

[release/7.0] [mono][s390x] Fix wrong implementation of OP_CHECK_THIS #76920

Merged
merged 1 commit into from
Oct 13, 2022

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Oct 12, 2022

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, the OP_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.

* Only access a single byte in memory for OP_CHECK_THIS

* Remove unnecessary ltgr instruction

* Fixes #76915
@akoeplinger akoeplinger added this to the 7.0.x milestone Oct 12, 2022
@akoeplinger akoeplinger added the Servicing-consider Issue for next servicing release review label Oct 12, 2022
@carlossanlop
Copy link
Member

@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?

@akoeplinger
Copy link
Member

This isn't critical for 7.0 GA, we can take it as part of normal servicing.

@carlossanlop
Copy link
Member

carlossanlop commented Oct 12, 2022

@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).

@akoeplinger
Copy link
Member

The failures are unrelated.

@rbhanda
Copy link
Contributor

rbhanda commented Oct 13, 2022

Approved only if this can be merged by 10/13/2022 EOD

@rbhanda rbhanda added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Oct 13, 2022
@rbhanda rbhanda modified the milestones: 7.0.x, 7.0.0 Oct 13, 2022
@carlossanlop
Copy link
Member

CI failures investigated as unrelated. Approved by Tactics. Signed off. Ready to merge. :shipit:

@carlossanlop carlossanlop merged commit 075e74e into release/7.0 Oct 13, 2022
@carlossanlop carlossanlop deleted the backport/pr-76916-to-release/7.0 branch October 13, 2022 18:08
@ghost ghost locked as resolved and limited conversation to collaborators Nov 12, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-VM-meta-mono Servicing-approved Approved for servicing release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants