Skip to content

Commit f1436be

Browse files
DrewScogginsCopilot
andcommitted
Disable composite R2R + .NET 11 benchmark scenarios
These scenarios all hang/crash in crossgen2 with IndexOutOfRangeException on .NET 11 preview SDKs that predate dotnet/runtime#129053 ("Fix composite R2R token corruption for devirtualized async-variant callees", merged 2026-06-06). The repro hits Kestrel's Http1ChunkedEncodingMessageBody.PumpAsync during composite R2R compilation; crossgen2 then fails to terminate, causing the crank-agent 10-minute build timeout we saw on 2026-06-08. build/singlefile-scenarios.yml: add per-mode `condition` field (threaded into the crank job condition) and set 'false' for Single-file, Trimmed, R2RComposite-Windows, R2RComposite-Linux. build/crossgen2-scenarios.yml: enrich the existing disable note on "CG2 composite" / "CG2 composite avx2" (already disabled by #2177) with a pointer to the upstream runtime fix. build/nativeaot-scenarios.yml: set condition to 'false' on the three Goldilocks "Trim R2R SingleFile" jobs (Stage1, Stage2, gRPC Stage1). Self-contained, AOT, non-composite R2R, and all NativeAOT scenarios remain enabled - the bug is composite-R2R-specific. Re-enable once the runtime fix flows into the .NET 11 SDK consumed by the benchmark agents. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 42c6a4b commit f1436be

3 files changed

Lines changed: 30 additions & 7 deletions

File tree

build/crossgen2-scenarios.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@ parameters:
3333
- displayName: Default
3434
arguments: --property profile=default
3535
condition: 'true'
36-
# Disabled: consistently fails with ILCompiler.CodeGenerationFailedException (IndexOutOfRangeException
37-
# in CorInfoImpl.HandleToModuleToken) during the crossgen2 composite publish, and on Windows runs has
38-
# caused crank to hang, blocking the rest of the jobs in the pipeline.
36+
# Disabled: fails with ILCompiler.CodeGenerationFailedException (IndexOutOfRangeException
37+
# in CorInfoImpl.HandleToModuleToken) during the crossgen2 composite publish, and on
38+
# Windows runs causes crank to hang, blocking the rest of the jobs in the pipeline.
39+
# Root cause fixed by dotnet/runtime#129053 (composite R2R token corruption for
40+
# devirtualized async-variant callees, merged 2026-06-06). Re-enable once that fix
41+
# flows into the .NET 11 SDK consumed by the benchmark agents.
3942
- displayName: CG2 composite # since 6.0-preview4 CG2 is the default when PublishReadyToRun=true is set
4043
arguments: --property profile=composite --application.buildArguments \"/p:PublishReadyToRun=true /p:PublishReadyToRunComposite=true /p:PublishReadyToRunUseCrossgen2=true \"
4144
condition: 'false'

build/nativeaot-scenarios.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ parameters:
3434

3535
- displayName: Goldilocks Stage 1 (CoreCLR - Trim R2R SingleFile)
3636
arguments: --scenario basicminimalapipublishtrimr2rsinglefile $(goldilocksJobs) --property scenario=Stage1TrimR2RSingleFile --property publish=coreclr --application.environmentVariables DOTNET_GCDynamicAdaptationMode=1
37-
condition: 'true'
37+
# Disabled: hits dotnet/runtime crossgen2 composite R2R bug on async-variant callees
38+
# (Kestrel Http1ChunkedEncodingMessageBody.PumpAsync). Re-enable once
39+
# https://github.com/dotnet/runtime/pull/129053 flows into the .NET 11 SDK.
40+
condition: 'false'
3841

3942
- displayName: Goldilocks Stage 1 (NativeAOT)
4043
# workaround https://github.com/dotnet/runtime/issues/81382 by explicitly referencing a Microsoft.DotNet.ILCompiler version
@@ -70,7 +73,9 @@ parameters:
7073

7174
- displayName: Goldilocks Stage 2 (CoreCLR - Trim R2R SingleFile)
7275
arguments: --scenario todosapipublishtrimr2rsinglefile $(goldilocksJobs) --property scenario=Stage2TrimR2RSingleFile --property publish=coreclr --application.environmentVariables DOTNET_GCDynamicAdaptationMode=1
73-
condition: 'true'
76+
# Disabled: see note on "Goldilocks Stage 1 (CoreCLR - Trim R2R SingleFile)" above.
77+
# Re-enable once https://github.com/dotnet/runtime/pull/129053 flows into the .NET 11 SDK.
78+
condition: 'false'
7479

7580
- displayName: Goldilocks Stage 2 (NativeAOT)
7681
# workaround https://github.com/dotnet/runtime/issues/81382 by explicitly referencing a Microsoft.DotNet.ILCompiler version
@@ -106,7 +111,9 @@ parameters:
106111

107112
- displayName: Goldilocks gRPC Stage 1 (CoreCLR - Trim R2R SingleFile)
108113
arguments: --scenario basicgrpcpublishtrimr2rsinglefile $(goldilocksJobs) --property scenario=Stage1GrpcTrimR2RSingleFile --property publish=coreclr --application.environmentVariables DOTNET_GCDynamicAdaptationMode=1
109-
condition: 'true'
114+
# Disabled: see note on "Goldilocks Stage 1 (CoreCLR - Trim R2R SingleFile)" above.
115+
# Re-enable once https://github.com/dotnet/runtime/pull/129053 flows into the .NET 11 SDK.
116+
condition: 'false'
110117

111118
- displayName: Goldilocks gRPC Stage 1 (NativeAOT)
112119
# workaround https://github.com/dotnet/runtime/issues/81382 by explicitly referencing a Microsoft.DotNet.ILCompiler version

build/singlefile-scenarios.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,30 @@ parameters:
3232

3333
- displayName: Self-contained
3434
arguments: --application.buildArguments \"/p:PublishReadyToRun=true /p:PublishSingleFile=false\" --property mode=SelfContained
35+
condition: 'true'
36+
# Disabled: hangs / fails with ILCompiler.CodeGenerationFailedException
37+
# (IndexOutOfRangeException in CorInfoImpl.HandleToModuleToken) during the
38+
# crossgen2 composite publish on .NET 11 preview SDKs predating
39+
# dotnet/runtime#129053 ("Fix composite R2R token corruption for devirtualized
40+
# async-variant callees", merged 2026-06-06). Re-enable once that fix flows
41+
# into the SDK consumed by the benchmark agents.
3542
- displayName: Single-file
3643
arguments: --application.buildArguments \"/p:PublishReadyToRun=true /p:PublishSingleFile=true\" --property mode=SingleFile
44+
condition: 'false'
3745
- displayName: Trimmed
3846
arguments: --application.buildArguments \"/p:PublishReadyToRun=true /p:PublishSingleFile=true /p:PublishTrimmed=true\" --property mode=Trimmed
47+
condition: 'false'
3948
- displayName: AOT
4049
# workaround https://github.com/dotnet/runtime/issues/81382 by explicitly referencing a Microsoft.DotNet.ILCompiler version
4150
arguments: --application.buildArguments \"/p:PublishAot=true /p:StripSymbols=true\" --property mode=Aot --application.packageReferences \"Microsoft.DotNet.ILCompiler=$(MicrosoftNETCoreAppPackageVersion)\"
51+
condition: 'true'
52+
# Disabled: see note on "Single-file" above (dotnet/runtime#129053).
4253
- displayName: R2RComposite-Windows
4354
arguments: --application.buildArguments \"/p:PublishReadyToRun=true /p:PublishReadyToRunComposite=true /p:PublishSingleFile=true /p:RuntimeIdentifier=win-x64\" --property mode=R2RComposite --property rid=win-x64 --application.options.requiredOperatingSystem windows
55+
condition: 'false'
4456
- displayName: R2RComposite-Linux
4557
arguments: --application.buildArguments \"/p:PublishReadyToRun=true /p:PublishReadyToRunComposite=true /p:PublishSingleFile=true /p:RuntimeIdentifier=linux-x64\" --property mode=R2RComposite --property rid=linux-x64 --application.options.requiredOperatingSystem linux
58+
condition: 'false'
4659

4760
steps:
4861
- ${{ each s in parameters.scenarios }}:
@@ -60,6 +73,6 @@ steps:
6073
messageBody: |
6174
{
6275
"name": "crank",
63-
"condition": "(${{ parameters.condition }})",
76+
"condition": "(${{ parameters.condition }}) && (${{ mode.condition }})",
6477
"args": [ "${{ s.arguments }} ${{ mode.arguments }} ${{ parameters.arguments }} --application.framework net11.0 --application.options.collectCounters true --no-metadata --no-measurements --load.options.reuseBuild true --session $(session) --description \"${{ s.displayName }} ${{ mode.displayName }} $(System.JobDisplayName)\" --property buildId=\"$(buildId)\" --property buildNumber=\"$(buildNumber)\" --command-line-property --table SingleFileBenchmarks --sql SQL_CONNECTION_STRING --cert-tenant-id SQL_SERVER_TENANTID --cert-client-id SQL_SERVER_CLIENTID --cert-path SQL_SERVER_CERT_PATH --cert-sni --chart" ]
6578
}

0 commit comments

Comments
 (0)