From 5dd6f148e2ddd334c6cd4d933b1f1ad6a9978865 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Wed, 13 May 2026 17:17:32 +0200 Subject: [PATCH 1/4] Raise build-stage timeout to 360m for CoreCLR outer-loop windows-arm64 cross-builds Fixes #127987 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/coreclr/crossgen2.yml | 2 ++ eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml | 2 ++ eng/pipelines/coreclr/r2r.yml | 2 ++ eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index 775928f7d3ffc2..96508dd6ca2ab6 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -31,6 +31,8 @@ extends: - windows_x64 - windows_arm64 jobParameters: + # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. + timeoutInMinutes: 360 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml b/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml index fceaa51d56310c..919603b8d256da 100644 --- a/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml +++ b/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml @@ -29,6 +29,8 @@ extends: # Adding it here will enable it also - osx_arm64 jobParameters: + # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. + timeoutInMinutes: 360 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/r2r.yml b/eng/pipelines/coreclr/r2r.yml index 8ed90b3ddfec1e..8f2f4fcf65d173 100644 --- a/eng/pipelines/coreclr/r2r.yml +++ b/eng/pipelines/coreclr/r2r.yml @@ -32,6 +32,8 @@ extends: - windows_x64 - windows_x86 jobParameters: + # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. + timeoutInMinutes: 360 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml b/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml index 41bea22cbb7f11..e9c0ac0607bfe8 100644 --- a/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml +++ b/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml @@ -21,6 +21,8 @@ extends: buildConfig: checked platforms: ${{ parameters.platforms }} jobParameters: + # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. + timeoutInMinutes: 360 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml From 74829ed69b51f36c8d2c36ac7e50d080376fb7d2 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Thu, 14 May 2026 12:50:41 +0200 Subject: [PATCH 2/4] Reduce build-stage timeout to 90m and drop comment Observed windows-arm64 checked cross-build durations are ~58m; 90m provides sufficient headroom over the 60m AzDO default without the 360m overshoot. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/coreclr/crossgen2.yml | 3 +-- eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml | 3 +-- eng/pipelines/coreclr/r2r.yml | 3 +-- eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index 96508dd6ca2ab6..b1d458a2dd1d22 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -31,8 +31,7 @@ extends: - windows_x64 - windows_arm64 jobParameters: - # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. - timeoutInMinutes: 360 + timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml b/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml index 919603b8d256da..2743ddd1f8ea9d 100644 --- a/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml +++ b/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml @@ -29,8 +29,7 @@ extends: # Adding it here will enable it also - osx_arm64 jobParameters: - # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. - timeoutInMinutes: 360 + timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/r2r.yml b/eng/pipelines/coreclr/r2r.yml index 8f2f4fcf65d173..c5b63fe65850c2 100644 --- a/eng/pipelines/coreclr/r2r.yml +++ b/eng/pipelines/coreclr/r2r.yml @@ -32,8 +32,7 @@ extends: - windows_x64 - windows_x86 jobParameters: - # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. - timeoutInMinutes: 360 + timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml b/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml index e9c0ac0607bfe8..8999c88ca35f17 100644 --- a/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml +++ b/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml @@ -21,8 +21,7 @@ extends: buildConfig: checked platforms: ${{ parameters.platforms }} jobParameters: - # Windows-arm64 checked cross-build needs more than the default 60m AzDO job timeout. - timeoutInMinutes: 360 + timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml From 3c8a839d69f49a546dfe00432a8dd5bb5e989656 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 15 May 2026 12:53:18 +0200 Subject: [PATCH 3/4] Scope windows-arm64 build-leg timeout bump to that platform only Move the 90-min default into xplat-setup.yml as a windows-arm64-specific default (parallel to the existing 120-min macOS default) and drop the broad jobParameters override from jit-outerloop-pipeline.yml, r2r.yml, crossgen2.yml, and gcstress0x3-gcstress0xc.yml. This avoids lowering the macOS default (120m) to 90m and avoids touching any platform other than the windows-arm64 cross-build legs that actually need it. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/common/xplat-setup.yml | 3 +++ eng/pipelines/coreclr/crossgen2.yml | 1 - eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml | 1 - eng/pipelines/coreclr/r2r.yml | 1 - eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml | 1 - 5 files changed, 3 insertions(+), 4 deletions(-) diff --git a/eng/pipelines/common/xplat-setup.yml b/eng/pipelines/common/xplat-setup.yml index 1f28b57b49f943..82c8afd0f814bf 100644 --- a/eng/pipelines/common/xplat-setup.yml +++ b/eng/pipelines/common/xplat-setup.yml @@ -199,6 +199,9 @@ jobs: # macOS hosted pool machines are slower so we need to give a greater timeout than the 60 mins default. ${{ if and(eq(parameters.jobParameters.timeoutInMinutes, ''), in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'tvos')) }}: timeoutInMinutes: 120 + # windows-arm64 build legs are cross-builds (arm64 toolchain on an amd64 agent) and exceed the 60 min default. + ${{ if and(eq(parameters.jobParameters.timeoutInMinutes, ''), eq(parameters.osGroup, 'windows'), eq(parameters.archType, 'arm64')) }}: + timeoutInMinutes: 90 ${{ insert }}: ${{ parameters.jobParameters }} ${{ if ne(parameters.helixQueuesTemplate, '') }}: jobTemplate: ${{ parameters.jobTemplate }} diff --git a/eng/pipelines/coreclr/crossgen2.yml b/eng/pipelines/coreclr/crossgen2.yml index b1d458a2dd1d22..775928f7d3ffc2 100644 --- a/eng/pipelines/coreclr/crossgen2.yml +++ b/eng/pipelines/coreclr/crossgen2.yml @@ -31,7 +31,6 @@ extends: - windows_x64 - windows_arm64 jobParameters: - timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml b/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml index 2743ddd1f8ea9d..fceaa51d56310c 100644 --- a/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml +++ b/eng/pipelines/coreclr/gcstress0x3-gcstress0xc.yml @@ -29,7 +29,6 @@ extends: # Adding it here will enable it also - osx_arm64 jobParameters: - timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/r2r.yml b/eng/pipelines/coreclr/r2r.yml index c5b63fe65850c2..8ed90b3ddfec1e 100644 --- a/eng/pipelines/coreclr/r2r.yml +++ b/eng/pipelines/coreclr/r2r.yml @@ -32,7 +32,6 @@ extends: - windows_x64 - windows_x86 jobParameters: - timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml diff --git a/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml b/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml index 8999c88ca35f17..41bea22cbb7f11 100644 --- a/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml +++ b/eng/pipelines/coreclr/templates/jit-outerloop-pipeline.yml @@ -21,7 +21,6 @@ extends: buildConfig: checked platforms: ${{ parameters.platforms }} jobParameters: - timeoutInMinutes: 90 buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-native-test-assets-step.yml From 16e4bd5acc9d9845ba539cfd6156047bf51cd4d4 Mon Sep 17 00:00:00 2001 From: Milos Kotlar Date: Fri, 15 May 2026 12:55:24 +0200 Subject: [PATCH 4/4] Drop windows-arm64 timeout comment Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/pipelines/common/xplat-setup.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/pipelines/common/xplat-setup.yml b/eng/pipelines/common/xplat-setup.yml index 82c8afd0f814bf..3347ce358594e1 100644 --- a/eng/pipelines/common/xplat-setup.yml +++ b/eng/pipelines/common/xplat-setup.yml @@ -199,7 +199,6 @@ jobs: # macOS hosted pool machines are slower so we need to give a greater timeout than the 60 mins default. ${{ if and(eq(parameters.jobParameters.timeoutInMinutes, ''), in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'tvos')) }}: timeoutInMinutes: 120 - # windows-arm64 build legs are cross-builds (arm64 toolchain on an amd64 agent) and exceed the 60 min default. ${{ if and(eq(parameters.jobParameters.timeoutInMinutes, ''), eq(parameters.osGroup, 'windows'), eq(parameters.archType, 'arm64')) }}: timeoutInMinutes: 90 ${{ insert }}: ${{ parameters.jobParameters }}