-
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
Assert in DoubleAlign scenario with GCStress and TieredCompilation #36366
Comments
From a quick look, either we need to update eetwain to understand the new prolog zeroing sequences, or the jit is not properly reporting the callee saved registers. Latter seems more likely. I'll investigate. |
I don't see the same failure mode. @AaronRobinsonMSFT can you verify in the below I am running the correct test?
|
@AndyAyersMS Your steps above seem correct. I am still able to reproduce this issue at 0c043d5. My steps and output are below.
|
I'm on a fairly old build, let me move up and retry. |
Moved up to ef72b95 and now can repro, intermittently. |
Have a theory about what's going on. The key managed method here is When run normally, this test case doesn't run long enough for The tier0 code has the following prolog & gc info
The Tier1 method has:
and as you can see we've just stress interrupted at the When we go to do stress and discover we're in the prolog, for x86 only, we unwind the stack via So when we unwind we are using the Tier1 gc info and the Tier0 code, and this is what leads to the assert. Should be fairly simple to fix, we just need to update |
@AndyAyersMS Thanks for the analysis. I do have a question about updating runtime/src/coreclr/src/vm/jitinterface.cpp Lines 14208 to 14246 in 344085b
|
Yes, exactly that bit. It grabs the GC coverage info from the MethodDesc, but (typically?) that will be the coverage info for the initially jitted version of the code. Simple fix attempt hits a lock level violation, so might need to wrangle things around a bit. |
@kouvel any suggestions on how best to fix this? |
@kouvel The lock issue I am seeing is below. I am unsure the reason for
|
The following is taking the runtime/src/coreclr/src/vm/readytoruninfo.cpp Lines 365 to 379 in 344085b
|
Hmm I'm not sure why |
After the fix in #36357 is merged, a new assert is firing. This assert appears to be a problem with CodeGen on x86 when
COMPlus_GCStress=0xC
. IfCOMPlus_TieredCompilation=0
is set, the assert goes away.Assert:
The below function failing when executed in the following loop:
runtime/src/coreclr/tests/src/Interop/COM/ComWrappers/API/Program.cs
Lines 316 to 326 in ba453bd
Failing stack:
Method causing assert:
/cc @jkotas @AndyAyersMS
The text was updated successfully, but these errors were encountered: