Skip to content

Conversation

@AndyAyersMS
Copy link
Member

If we're promoting a long field, make sure compLongUsed gets set.
Otherwise we may fail to properly decompose a long later on.

Fixes #32059.

If we're promoting a long field, make sure `compLongUsed` gets set.
Otherwise we may fail to properly decompose a long later on.

Fixes dotnet#32059.
@AndyAyersMS AndyAyersMS added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Feb 23, 2020
@AndyAyersMS
Copy link
Member Author

cc @dotnet/jit-contrib

Not sure this is reachable in C#. I may need to create an IL test case.

@BruceForstall
Copy link
Contributor

@AndyAyersMS Looks like this should get fixed in 3.1?

@AndyAyersMS
Copy link
Member Author

Yes, we should make a case for fixing this in 3.1.

I think it can be the exact same fix, but haven't looked yet.

@AndyAyersMS
Copy link
Member Author

live build failure is unrelated; will ignore.

@AndyAyersMS AndyAyersMS merged commit 032e8db into dotnet:master Feb 24, 2020
@AndyAyersMS AndyAyersMS deleted the Fix32059 branch February 24, 2020 19:31
AndyAyersMS added a commit to AndyAyersMS/coreclr that referenced this pull request Feb 24, 2020
If we're promoting a long field, make sure `compLongUsed` gets set.
Otherwise we may fail to properly decompose a long later on, leading
to access violations in the jit.

See dotnet/runtime#32059 for the original bug report, and
dotnet/runtime#32702 for the fix in 5.0.

## Customer Impact
Unexpected and hard to diagnose crash in the jit. No easy workaround.

## Regression?
Yes, introduced during the development 3.0 cycle. 2.x behaves correctly.

## Testing
Verified the user's test case now passes; no diffs seen in any existing
framework or test code.

## Risk
**Low**: fix is surgical and enables existing long operand handling in
the jit in one case that can be overlooked. Only impacts x86 and arm
codegen. Problematic IL patterns may not be reachable from C#.
Anipik pushed a commit to dotnet/coreclr that referenced this pull request Mar 25, 2020
If we're promoting a long field, make sure `compLongUsed` gets set.
Otherwise we may fail to properly decompose a long later on, leading
to access violations in the jit.

See dotnet/runtime#32059 for the original bug report, and
dotnet/runtime#32702 for the fix in 5.0.

## Customer Impact
Unexpected and hard to diagnose crash in the jit. No easy workaround.

## Regression?
Yes, introduced during the development 3.0 cycle. 2.x behaves correctly.

## Testing
Verified the user's test case now passes; no diffs seen in any existing
framework or test code.

## Risk
**Low**: fix is surgical and enables existing long operand handling in
the jit in one case that can be overlooked. Only impacts x86 and arm
codegen. Problematic IL patterns may not be reachable from C#.
@ghost ghost locked as resolved and limited conversation to collaborators Dec 10, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

System.AccessViolationException only in Release x86 in basic console app

2 participants