Skip to content

Conversation

@trylek
Copy link
Member

@trylek trylek commented Mar 15, 2021

This change introduces runtime consistency checks that make sure that for component assemblies of component images we're loading the same versions of these assemblies (with matching MVID). The change has the following aspects:

  1. Producing new R2R header table ManifestAssemblyMvids in Crossgen2;
  2. Consuming the new table at runtime and using it to implement the consistency checks;
  3. Change to R2RDump to support dumping the new R2R header section;
  4. Update of the R2R format spec to include the new table.

I'm still testing the change locally and I intend to author a negative unit test but from my perspective the change should be code complete so I'm looking forward to feedback.

Thanks

Tomas

trylek added 3 commits March 15, 2021 21:09
(*) Renamed 'ComponentAssemblyMvids' to 'ManifestAssemblyMvids' to
better express the fact that the MVID table is parallel to the
manifest metadata.

(*) Added basic R2RDump support for dumping the manifest assembly
MVID table.

(*) Fixed R2R format version number in Crossgen2.

Thanks

Tomas
Copy link
Member

@davidwrighton davidwrighton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mangod9, @dotnet/crossgen-contrib Before we ship, we need to figure out what to do about hammer servicing, as a hammer service event will cause a failfast with this, but otherwise, this looks ok.

@trylek
Copy link
Member Author

trylek commented Mar 16, 2021

Thanks David and Anton for your feedback. Just to set the right expectations, this is supposed to be a mitigation of the large version bubble consistency issue, not its full resolution. In particular, while the proposed update to the R2R format also supports MVID tables for single-input compilations in large version bubble mode, I haven't implemented the consistency checks for this case as they would be more costly and my current understanding is that it's not a shipping scenario.

@mangod9
Copy link
Member

mangod9 commented Mar 17, 2021

We should discuss hammer servicing during our cg2 sync.

@trylek trylek merged commit 3f28d48 into dotnet:main Mar 17, 2021
@trylek trylek deleted the CG2MvidCheck branch March 17, 2021 19:55
@ghost ghost locked as resolved and limited conversation to collaborators Apr 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants