-
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
Test Loader/classloader/generics/Layout/General/Base01b_seq_ser/Base01b_seq_ser.sh failed with Assert failure(PID 1006 [0x000003ee], Thread: 1006 [0x03ee]): (GetComponentSize() <= 2) || IsArray() #33366
Comments
@janvorli Can you triage? |
Looks like a GC hole - my guess is that the MethodTable is corrupted. |
Test
Stack trace:
|
Failing in GCStress=C for Linux x64/arm64/arm32: for these tests:
|
I can repro the failure in Base01b_seq_ser.sh (0xC gc stress, no other env settings) on Linux x64.
At first look this seems to go bad during a gc in
From the stresslog, GC only seems to enumerate references in the topmost managed frame. There are some transition/helper frames below that so perhaps stackwalking gets thrown off there. Assertion failure is a bit downstream from , when VerifyLayout virtually calls string equals on a field of its Will debug the stackwalk next. |
Also fails at the same spot with
which might be a bit easier to debug. |
More detailed logging shows the stack walk is ok, and we're reporting the Wondering if there's something amiss in the class loader for this case. From what I can tell, Using the minopts settings just above:
|
For future reference, to dump the CDCDesc on Linux you can call a method in the debugger, but you need to have logging enabled first.
If I remove the SequentialLayout attribute from This doesn't look like a codegen issue. @jkotas can you help route this to the right person? |
@AndyAyersMS This bug is a basic typesystem bug. We should send it to @fadimounir |
Same underlying issue is there on windows but the test doesn't fail; guess we get lucky. |
I guess the GC needs to relocate the object in question in order for the process to hit the AV. I've seen cases like this before. |
Right, the jit GC info seems correct, and GC scans the |
In particular, @AndyAyersMS told me offline that the ContainsPointers bit wasn't set on the MethodTable, so possibly its just a bug around ContainsPointers inheritance, or a problem with that and GCDesc creation. |
Ok thank you for the context and information you gathered so far. I will take a closer look at why the ContainsPointers bit wasn't set |
Same details above in the LLDB spew...
|
Job:
runtime-coreclr gcstress0x3-gcstress0xc:20200308.1
Error message:
Stack trace:
at Loader_classloader._generics_Layout_General_Base01b_seq_ser_Base01b_seq_ser_._generics_Layout_General_Base01b_seq_ser_Base01b_seq_ser_sh() in /__w/17/s/artifacts/tests/coreclr/Linux.arm.Checked/TestWrappers/Loader.classloader/Loader.classloader.XUnitWrapper.cs:line 10713
Details:
https://dev.azure.com/dnceng/public/_build/results?buildId=551522&view=ms.vss-test-web.build-test-results-tab&runId=17415558&paneView=debug&resultId=102366
category:correctness
theme:testing
skill-level:expert
cost:medium
The text was updated successfully, but these errors were encountered: