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

[Regression][JitStressRegs=0x2] Assertion failed '!varDsc->lvIsRegCandidate()' #11653

Closed
sandreenko opened this issue Dec 12, 2018 · 6 comments
Closed
Assignees
Labels
arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI bug JitStress CLR JIT issues involving JIT internal stress modes os-linux Linux OS (any supported distro)

Comments

@sandreenko
Copy link
Contributor

The test started to fail 4 days ago : ci example.

cc @dotnet/jit-contrib

"Don't struct-promote opaque vectors" dotnet/coreclr#21314 looks like the most relevant change, @CarolEidt could you please take a look?

@CarolEidt
Copy link
Contributor

The test is JIT\HardwareIntrinsics\General\Vector128_1\Vector128_1_ro\Vector128_1_ro.exe
It doesn't repro on arm64 windows (or on the windows x64 arm64 altjit).

@tannergooding
Copy link
Member

The explicit scenario failing is: JIT.HardwareIntrinsics.General.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:RunReflectionScenario(). The RunBasicScenario always runs first, so that succeeded and this may be something specific to the reflection code.

@tannergooding
Copy link
Member

Given that this is the VectorGetAndWithLowerAndUpper test, that also means that it is either:

  • Testing GetLower/GetUpper, in which case the parameter is a Vector128<T> (the this parameter) and it would return a Vector64<T>
    -or-
  • Testing WithLower/WithUpper, in which case the parameter is a Vector128<T> (the this parameter) and a Vector64<T> (the new value to insert) and it would return a new Vector128<T>

@CarolEidt
Copy link
Contributor

@sandreenko - I'm stumped on this. I wasn't able to repro on arm64/linux, even after resetting to dotnet/coreclr@13f8624 which was the last commit in the batch that were being tested.
@dotnet/jit-contrib - any suggestions? I haven't yet tried doing a full run, but it fails to repro with:

export COMPlus_TieredCompilation=0
export COMPlus_JitStressRegs=2

and then either running the .sh file with -coreroot or running the .exe directly with corerun.

@sandreenko
Copy link
Contributor Author

I saw this in different ci jobs, so it can't be just a noise.
For example job that failed 8 hours ago.

CarolEidt referenced this issue in CarolEidt/coreclr Dec 13, 2018
When a multi-reg var is defined by a call, but doesn't currently reside in a register,
we must still update liveness.

Fix #21500
CarolEidt referenced this issue in CarolEidt/coreclr Dec 13, 2018
When a multi-reg var is defined by a call, but doesn't currently reside in a register,
we must still update liveness.

Fix #21500
@CarolEidt
Copy link
Contributor

So ... when the test build completes, it teases you with instructions on how to run a single test. However, at least for this test case, the single test ran just fine until I ran it as part of a full test run - then it failed, and continued to fail when run individually, with the same command and environment that was passing before. It's not clear to me what is changing, but clearly the full test run does some additional configuration that wasn't being done before.

In any event, I have a PR with a fix. It wasn't strictly related to dotnet/coreclr#21314, except that that PR caused the lclVar of interest in this case to no longer be promoted, so it was a register candidate - which would have been fine except that due to stress it didn't get a register, and then when it was defined its liveness wasn't being updated.

@msftgits msftgits transferred this issue from dotnet/coreclr Jan 31, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Dec 14, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI bug JitStress CLR JIT issues involving JIT internal stress modes os-linux Linux OS (any supported distro)
Projects
None yet
Development

No branches or pull requests

3 participants