-
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
Test failure: Assert failure: Verify_TypeLayout 'System.Numerics.Vector`1' failed to verify type layout #60036
Comments
@tannergooding Any chance #53450 could be causing this? |
I was actually looking at the bug earlier today. It indeed seems specific to arm64, I must admit I don't yet fully understand the extent of Tanner's change but I suspect it most likely just exposes a previously unseen type layout corner case we're still not getting right in Crossgen2. I have revived my work from earlier this year regarding cleanup of the CoreCLR type layout algorithms, I'll investigate this issue as part of that task. |
As a short-term mitigation I'll put up a PR blocking the test out with this issue. |
@BruceForstall, its certainly possible. However, the change was largely just a refactoring so the existing Let me know if there's anything I can do to help with the investigation. |
In my change from the summer I added provisions to the type layout check to support printing the differences as an aid for investigation of this class of failures; I however put the diff display after the assertion so that it actually doesn't get hit as the assertion tears down the process. This change fixes the ordering and should let us review the particular mismatch that occurs in the arm64 runs (dotnet#60036). Thanks Tomas
In my change from the summer I added provisions to the type layout check to support printing the differences as an aid for investigation of this class of failures; I however put the diff display after the assertion so that it actually doesn't get hit as the assertion tears down the process. This change fixes the ordering and should let us review the particular mismatch that occurs in the arm64 runs (#60036). Thanks Tomas P.S. The change includes the instrumentation to unblock the GenericsTest test that hits this issue to let me analyze the diff.
OK, I found out that diagnostics I added for this purpose in the summer doesn't really work because the call that explains the type mismatch in the log is below the assertion failure which tears down the process. By using an instrumented run including the fix I'm currently code reviewing and removal of the failing Testing Vector<bool> Type System.Numerics.Vector`1: expected HFA type 00000004, actual 00000000 Type System.Numerics.Vector`1: expected HFA type 00000004, actual 00000000 Expected: 100 Actual: -1073740286 @davidwrighton / @jakobbotsch, can you please comment on what is the correct HFA value? I believe that the left-hand side (expected, 4) is what Crossgen2 generates whereas the right-hand side (actual, 0) is what the CoreCLR runtime generates when constructing the type. This is what R2RDump shows for the fixup: System.Numerics.Vector`1 Flags READYTORUN_LAYOUT_HFA, READYTORUN_LAYOUT_Alignment, READYTORUN_LAYOUT_Alignment_Native, READYTORUN_LAYOUT_GCLayout, READYTORUN_LAYOUT_GCLayout_Empty Size 16 HFAType 4 (VERIFY_TYPE_LAYOUT) Thanks Tomas |
Is this maybe a disconnect between between Perhaps there is some missing handling that's treating it like a "standard user-defined struct" rather than something which is either
|
this is marked as blocking-outerloop, perhaps since the test is disabled? Another type layout issue which needs to be looked at? |
I believe that we should remove the "blocking outerloop" label when we disable a test - technically all failing tests are disabled because otherwise they would be blocking innerloop, outerloop or other pipelines, in my opinion the blocking label is a "call to action" that may result in several things and blocking the test in issues.targets is one of them; having said that it's most likely it was myself who overlooked removing the label when I added the issues.targets entries, I'm going to go ahead and remove it now. |
runtime-coreclr outerloop
pipeline is failing on windows/Linux arm64 due to this assert.https://dev.azure.com/dnceng/public/_build/results?buildId=1397053&view=ms.vss-test-web.build-test-results-tab
e.g.,
@dotnet/crossgen-contrib
The text was updated successfully, but these errors were encountered: