Validate MVIDs of assemblies in large version bubble#25281
Validate MVIDs of assemblies in large version bubble#25281MichalStrehovsky wants to merge 10 commits into
Conversation
This reuses the logic we had lying around for fragile NGen. We store the pointer to the data in the ready to run header instead.
Co-Authored-By: Jan Kotas <jkotas@microsoft.com>
|
Well of course there's Unix specific test failures. Looking... |
davidwrighton
left a comment
There was a problem hiding this comment.
Please look into what happens with AssemblyLoadContexts. As this feature is somewhat experimental, I'm ok with what I believe are fail-safe modes, but it will prevent full utilization of the feature for some customers.
| pImage->GetNativeMDImport(), | ||
| GetDomainAssembly()); | ||
|
|
||
| GetAppDomain()->CheckForMismatchedNativeImages(&name, &pDependency->Mvid); |
There was a problem hiding this comment.
The CheckForMismatchedNativeImages feature doesn't appear to me to be correct in the presence of AssemblyLoadContext's with non-default behavior which load ReadyToRun images.
There are 2 issues
- The list is AppDomain level, and that's not appropriate for checks that do not have AppDomain locality.
- There is assembly name normalization that occurs as part of CheckForMismatchedNative images. This normalization is appropriate for the non-AssemblyLoadContext world, but in the presence of assembly load contexts, normalization isn't correct.
|
The newly added test is failing because we're apparently not picking up the After trying to find the thing I broke for half a day today I found out that with vanilla master CoreCLR: Is it expected that we're not loading .ni.exe files unless they're in CORE_ROOT? If I go and |
|
That doesn't sound expected to me. |
@davidwrighton I have a fix out in #25592. |
|
Thank you for your contribution. As announced in dotnet/coreclr#27549 this repository will be moving to dotnet/runtime on November 13. If you would like to continue working on this PR after this date, the easiest way to move the change to dotnet/runtime is:
|
|
Thank you for your contribution. As announced in #27549 the dotnet/runtime repository will be used going forward for changes to this code base. Closing this PR as no more changes will be accepted into master for this repository. If you’d like to continue working on this change please move it to dotnet/runtime. |
This reuses the logic we had lying around for fragile NGen.
We store the pointer to the data in the ready to run header instead.