Skip to content

Add pipeline legs for crossgen2 with --large_version_bubble#125538

Merged
jtschuster merged 3 commits intodotnet:mainfrom
jtschuster:ReproIosFailure
Mar 16, 2026
Merged

Add pipeline legs for crossgen2 with --large_version_bubble#125538
jtschuster merged 3 commits intodotnet:mainfrom
jtschuster:ReproIosFailure

Conversation

@jtschuster
Copy link
Member

We don't have pipeline legs that build coreclr tests with the framework in the coreclr tests. This would have caught the issue from #125444 in the crossgen2 pipeline. It looks like the change in that PR didn't fully fix the issue but just kicked the can down for a later exception to throw.

Add a job to runtime-coreclr crossgen2-composite to build the tests including the framework libraries.

In composite mode, skip compiling all async methods rather than just not emitting them.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds CI coverage for crossgen2 composite mode with --inputbubble (“large version bubble”) and updates crossgen2/R2R compilation behavior to avoid async-related token-resolution crashes when running in composite mode.

Changes:

  • Add a new crossgen2-composite pipeline leg (linux/windows x64) that runs composite R2R tests with largeVersionBubble: true.
  • Plumb largeVersionBubble through Helix templates into helixpublishwitharcade.proj, exporting LargeVersionBubble=1 for test execution.
  • Adjust R2R codegen behavior to skip compiling compiler-generated async IL bodies in composite mode; update R2RDump invocation to include --rp.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/tests/Common/helixpublishwitharcade.proj Adds MSBuild property passthrough + Helix env var export for LargeVersionBubble.
src/tests/Common/CLRTest.CrossGen.targets Passes --rp to R2RDump and relies on LargeVersionBubble to add --inputbubble to crossgen2 args.
src/coreclr/tools/aot/ILCompiler.ReadyToRun/JitInterface/CorInfoImpl.ReadyToRun.cs Extends skip logic to avoid compiling compiler-generated async IL bodies in composite mode.
src/coreclr/tools/aot/ILCompiler.ReadyToRun/Compiler/DependencyAnalysis/ReadyToRunCodegenNodeFactory.cs Narrows async-method emission filtering to ARM32 only.
eng/pipelines/coreclr/crossgen2-composite.yml Adds a new matrix leg for composite + large version bubble runs.
eng/pipelines/common/templates/runtimes/send-to-helix-step.yml Adds largeVersionBubble parameter and forwards it to Helix publish MSBuild env.
eng/pipelines/common/templates/runtimes/run-test-job.yml Adds largeVersionBubble parameter and forwards it to send-to-helix; adjusts log prefix.

Copy link
Member

@jkoritzinsky jkoritzinsky left a comment

Choose a reason for hiding this comment

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

Lets make sure we have an issue filed to re-enable R2Ring runtime-async methods in composite mode as aspnetcore uses composite mode as well in some cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

AOT CrossGen build error: NotImplementedException resolving tokens (ModuleTokenResolver)

3 participants