-
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
Fix published crossgen2 crash #107447
Fix published crossgen2 crash #107447
Conversation
Tagging subscribers to this area: @hoyosjs |
@clamp03, libraries configurations are always default to Release. If you pass LibrariesConfiguraiton from command line it is overridden. That PR did not change that mechanism. Can you share the command which my PR regressed in your workflow? I tested the whole matrix, including riscv64: https://github.com/am11/CrossRepoCITesting/actions/runs/10541101133/workflow#L21. |
Thank you! I checked it doesn't fail if I give LibrariesConfiguation well. However, if I don't give, it builds well and it crashes in tests. I think it is better to make test successfully if it is possible to build without This is how I test (without this PR). Build
Test on RISC-V
|
Thanks.
Is it the one from Core_Root directory? Before that PR, we were using |
I used
I see. You already discussed with @jakobbotsch Thank you so much for the sharing. If we have to pass This is detail about what I investigated. runtime/src/coreclr/vm/methodtable.h Lines 3829 to 3833 in b10f5c9
So offset to m_pParentMethodTable is 0x18 in RISC-V. In Release lib, Lines 685 to 702 in b10f5c9
Thank you!!! |
Could you try this patch: main...am11:runtime:patch-11 (delete |
@am11 Thank you. I will try and let you know the result. |
I tested with your patch. However, it still fails with the same reason (It crashes at the same machine code location). |
If it is necessary to give |
Yup, this is the right approach. Currently, LibrariesConfiguration=Release is intentional. When/if we integrate See #75033; same change which was ultimately rejected due to sensitive nature of these workflows. |
If test is built as Debug or Checked without
LibrariesConfiguration
,LibrariesConfiguration
is set to defaultRelease
configuration.So when it builds crossgen2, it uses debug c/c++ codes with non-debug libraries. It makes some mismatching and crossgen2 crashes in some tests.
For example,
ParentMethodTableOffset
inMethodTable
has different values inmethodtable.h
andRuntimeHelpers.CoreCLR.cs
because debug mode hasdebug_m_szClassName
field and release mode doesn't have.cc @dotnet/samsung