From 801420ea075a2b01e41777f68df25a2cc9ffa5f7 Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Wed, 7 Jan 2026 16:49:06 -0500 Subject: [PATCH 1/7] [release/10] Bump MacOS helix queues to MacOS 14 --- eng/pipelines/coreclr/templates/helix-queues-setup.yml | 6 +++--- eng/pipelines/installer/helix-queues-setup.yml | 4 ++-- eng/pipelines/libraries/helix-queues-setup.yml | 4 ++-- src/coreclr/scripts/superpmi_collect_setup.py | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/eng/pipelines/coreclr/templates/helix-queues-setup.yml b/eng/pipelines/coreclr/templates/helix-queues-setup.yml index dd2cde19cb51f4..b653ea2f86a9ba 100644 --- a/eng/pipelines/coreclr/templates/helix-queues-setup.yml +++ b/eng/pipelines/coreclr/templates/helix-queues-setup.yml @@ -105,7 +105,7 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(parameters.jobParameters.helixQueueGroup, 'superpmi-diffs')) }}: - - OSX.13.Arm64.Open + - OSX.14.Arm64.Open - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(parameters.jobParameters.helixQueueGroup, 'superpmi-diffs')) }}: # superpmi is not about testing platform differences, so go with highest capacity queue - OSX.14.Arm64.Open @@ -115,9 +115,9 @@ jobs: # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - - OSX.13.Amd64.Open + - OSX.14.Amd64.Open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - OSX.13.Amd64 + - OSX.14.Amd64 # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/installer/helix-queues-setup.yml b/eng/pipelines/installer/helix-queues-setup.yml index d05f63bd1be15c..4c79006890d13b 100644 --- a/eng/pipelines/installer/helix-queues-setup.yml +++ b/eng/pipelines/installer/helix-queues-setup.yml @@ -45,11 +45,11 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - osx.13.Arm64.Open + - osx.14.Arm64.Open # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - OSX.13.Amd64.Open + - OSX.14.Amd64.Open # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index 40ffea4b0703b6..5644effee6b357 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -78,11 +78,11 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - osx.13.arm64.open + - osx.14.arm64.open # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - OSX.13.Amd64.Open + - OSX.14.Amd64.Open # Android - ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}: diff --git a/src/coreclr/scripts/superpmi_collect_setup.py b/src/coreclr/scripts/superpmi_collect_setup.py index 0de14ce642d940..c99500c7cb0319 100644 --- a/src/coreclr/scripts/superpmi_collect_setup.py +++ b/src/coreclr/scripts/superpmi_collect_setup.py @@ -470,9 +470,9 @@ def main(main_args): helix_queue = "azurelinux.3.amd64.open" elif platform_name == "osx": if arch == "arm64": # public osx_arm64 - helix_queue = "osx.13.arm64.open" + helix_queue = "osx.14.arm64.open" else: # public osx_x64 - helix_queue = "OSX.13.Amd64.Open" + helix_queue = "OSX.14.Amd64.Open" else: if platform_name == "windows": if arch == "arm64": # internal windows_arm64 @@ -488,9 +488,9 @@ def main(main_args): helix_queue = "azurelinux.3.amd64" elif platform_name == "osx": if arch == "arm64": # internal osx_arm64 - helix_queue = "OSX.13.ARM64" + helix_queue = "OSX.14.ARM64" else: # internal osx_x64 - helix_queue = "OSX.13.Amd64" + helix_queue = "OSX.14.Amd64" # Copy the superpmi scripts From 8a9f8650d8ad6fdf4e34511bdd46ae4366bc9473 Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Wed, 7 Jan 2026 19:55:03 -0500 Subject: [PATCH 2/7] Let's do MacOS 26 instead --- .../coreclr/templates/helix-queues-setup.yml | 12 ++++++------ eng/pipelines/installer/helix-queues-setup.yml | 4 ++-- eng/pipelines/libraries/helix-queues-setup.yml | 6 +++--- src/coreclr/scripts/superpmi_collect_setup.py | 8 ++++---- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/eng/pipelines/coreclr/templates/helix-queues-setup.yml b/eng/pipelines/coreclr/templates/helix-queues-setup.yml index b653ea2f86a9ba..de803e19b0b0dc 100644 --- a/eng/pipelines/coreclr/templates/helix-queues-setup.yml +++ b/eng/pipelines/coreclr/templates/helix-queues-setup.yml @@ -34,7 +34,7 @@ jobs: # iOS Simulator/Mac Catalyst arm64 - ${{ if in(parameters.platform, 'maccatalyst_arm64', 'iossimulator_arm64') }}: - - OSX.14.Arm64.Open + - OSX.26.Arm64.Open # iOS/tvOS Simulator x64 & MacCatalyst x64 - ${{ if in(parameters.platform, 'iossimulator_x64', 'tvossimulator_x64', 'maccatalyst_x64') }}: @@ -105,19 +105,19 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(parameters.jobParameters.helixQueueGroup, 'superpmi-diffs')) }}: - - OSX.14.Arm64.Open + - OSX.26.Arm64.Open - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(parameters.jobParameters.helixQueueGroup, 'superpmi-diffs')) }}: # superpmi is not about testing platform differences, so go with highest capacity queue - - OSX.14.Arm64.Open + - OSX.26.Arm64.Open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - OSX.14.Arm64 + - OSX.26.Arm64 # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - - OSX.14.Amd64.Open + - OSX.26.Amd64.Open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - OSX.14.Amd64 + - OSX.26.Amd64 # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/installer/helix-queues-setup.yml b/eng/pipelines/installer/helix-queues-setup.yml index 4c79006890d13b..c544c915eb7d28 100644 --- a/eng/pipelines/installer/helix-queues-setup.yml +++ b/eng/pipelines/installer/helix-queues-setup.yml @@ -45,11 +45,11 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - osx.14.Arm64.Open + - osx.26.Arm64.Open # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - OSX.14.Amd64.Open + - OSX.26.Amd64.Open # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index 5644effee6b357..1644864c1c69f9 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -78,11 +78,11 @@ jobs: # OSX arm64 - ${{ if eq(parameters.platform, 'osx_arm64') }}: - - osx.14.arm64.open + - osx.26.arm64.open # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - OSX.14.Amd64.Open + - OSX.26.Amd64.Open # Android - ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}: @@ -92,7 +92,7 @@ jobs: # iOS Simulator/Mac Catalyst arm64 - ${{ if in(parameters.platform, 'maccatalyst_arm64', 'iossimulator_arm64') }}: - - OSX.14.Arm64.Open + - OSX.26.Arm64.Open # iOS/tvOS Simulator x64 & MacCatalyst x64 - ${{ if in(parameters.platform, 'iossimulator_x64', 'tvossimulator_x64', 'maccatalyst_x64') }}: diff --git a/src/coreclr/scripts/superpmi_collect_setup.py b/src/coreclr/scripts/superpmi_collect_setup.py index c99500c7cb0319..1d9c6ac16e03a4 100644 --- a/src/coreclr/scripts/superpmi_collect_setup.py +++ b/src/coreclr/scripts/superpmi_collect_setup.py @@ -470,9 +470,9 @@ def main(main_args): helix_queue = "azurelinux.3.amd64.open" elif platform_name == "osx": if arch == "arm64": # public osx_arm64 - helix_queue = "osx.14.arm64.open" + helix_queue = "osx.26.arm64.open" else: # public osx_x64 - helix_queue = "OSX.14.Amd64.Open" + helix_queue = "OSX.26.Amd64.Open" else: if platform_name == "windows": if arch == "arm64": # internal windows_arm64 @@ -488,9 +488,9 @@ def main(main_args): helix_queue = "azurelinux.3.amd64" elif platform_name == "osx": if arch == "arm64": # internal osx_arm64 - helix_queue = "OSX.14.ARM64" + helix_queue = "OSX.26.ARM64" else: # internal osx_x64 - helix_queue = "OSX.14.Amd64" + helix_queue = "OSX.26.Amd64" # Copy the superpmi scripts From 8dbc31090a638595ee7f259d76728181c365e214 Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Wed, 7 Jan 2026 21:24:28 -0500 Subject: [PATCH 3/7] Fix x64 --- eng/pipelines/coreclr/templates/helix-queues-setup.yml | 4 ++-- eng/pipelines/installer/helix-queues-setup.yml | 2 +- eng/pipelines/libraries/helix-queues-setup.yml | 2 +- src/coreclr/scripts/superpmi_collect_setup.py | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/pipelines/coreclr/templates/helix-queues-setup.yml b/eng/pipelines/coreclr/templates/helix-queues-setup.yml index de803e19b0b0dc..0137ce3f255210 100644 --- a/eng/pipelines/coreclr/templates/helix-queues-setup.yml +++ b/eng/pipelines/coreclr/templates/helix-queues-setup.yml @@ -115,9 +115,9 @@ jobs: # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - - OSX.26.Amd64.Open + - OSX.15.Amd64.Open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - OSX.26.Amd64 + - OSX.15.Amd64 # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/installer/helix-queues-setup.yml b/eng/pipelines/installer/helix-queues-setup.yml index c544c915eb7d28..ef53309a5e449d 100644 --- a/eng/pipelines/installer/helix-queues-setup.yml +++ b/eng/pipelines/installer/helix-queues-setup.yml @@ -49,7 +49,7 @@ jobs: # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - OSX.26.Amd64.Open + - OSX.15.Amd64.Open # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index 1644864c1c69f9..f7e5a4bc550b3d 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -82,7 +82,7 @@ jobs: # OSX x64 - ${{ if eq(parameters.platform, 'osx_x64') }}: - - OSX.26.Amd64.Open + - OSX.15.Amd64.Open # Android - ${{ if in(parameters.platform, 'android_x86', 'android_x64', 'linux_bionic_x64') }}: diff --git a/src/coreclr/scripts/superpmi_collect_setup.py b/src/coreclr/scripts/superpmi_collect_setup.py index 1d9c6ac16e03a4..8ee6648d1533da 100644 --- a/src/coreclr/scripts/superpmi_collect_setup.py +++ b/src/coreclr/scripts/superpmi_collect_setup.py @@ -472,7 +472,7 @@ def main(main_args): if arch == "arm64": # public osx_arm64 helix_queue = "osx.26.arm64.open" else: # public osx_x64 - helix_queue = "OSX.26.Amd64.Open" + helix_queue = "OSX.15.Amd64.Open" else: if platform_name == "windows": if arch == "arm64": # internal windows_arm64 @@ -490,7 +490,7 @@ def main(main_args): if arch == "arm64": # internal osx_arm64 helix_queue = "OSX.26.ARM64" else: # internal osx_x64 - helix_queue = "OSX.26.Amd64" + helix_queue = "OSX.15.Amd64" # Copy the superpmi scripts From a8d04a335920f708e4f6f895fac5558bebe89ddf Mon Sep 17 00:00:00 2001 From: Ahmet Ibrahim Aksoy Date: Mon, 17 Nov 2025 15:06:51 +0100 Subject: [PATCH 4/7] Disable Socket tests on Apple Platforms which requires Local Network permission (#121496) Some networking tests on OSX requires Local Network permission after OSX 13. These requirements are practically same for all Apple platforms so disabling them for now. Until we figure out a clear solution on pipeline machines. --- .../tests/FunctionalTests/SendTo.cs | 12 +++++++++--- .../tests/FunctionalTests/SocketOptionNameTest.cs | 10 +++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs index af4f83a2e632c1..2208d905efb675 100644 --- a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs +++ b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SendTo.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Microsoft.DotNet.XUnitExtensions; using Xunit; using Xunit.Abstractions; @@ -93,16 +94,21 @@ public async Task Datagram_UDP_ShouldImplicitlyBindLocalEndpoint() Assert.NotNull(socket.LocalEndPoint); } - [Fact] + [ConditionalFact] [SkipOnPlatform(TestPlatforms.FreeBSD, "FreeBSD allows sendto() to broadcast")] - [ActiveIssue("https://github.com/dotnet/runtime/issues/114450", typeof(PlatformDetection), nameof(PlatformDetection.IsMacCatalyst), nameof(PlatformDetection.IsX64Process))] public async Task Datagram_UDP_AccessDenied_Throws_DoesNotBind() { IPEndPoint invalidEndpoint = new IPEndPoint(IPAddress.Broadcast, 1234); using var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); byte[] buffer = new byte[32]; - var e = await Assert.ThrowsAnyAsync(() => SendToAsync(socket, new ArraySegment(buffer), invalidEndpoint)); + SocketException e = await Assert.ThrowsAnyAsync(() => SendToAsync(socket, new ArraySegment(buffer), invalidEndpoint)); + if (e.SocketErrorCode == SocketError.HostUnreachable && PlatformDetection.IsApplePlatform) + { + // https://github.com/dotnet/runtime/issues/114450 + throw new SkipTestException("HostUnreachable indicates missing local network permission; this test might pass or fail depending on the environment. Please verify manually."); + } + Assert.Equal(SocketError.AccessDenied, e.SocketErrorCode); Assert.Null(socket.LocalEndPoint); } diff --git a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs index 61aa6941fcf821..85921abc15bef4 100644 --- a/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs +++ b/src/libraries/System.Net.Sockets/tests/FunctionalTests/SocketOptionNameTest.cs @@ -73,7 +73,15 @@ public void MulticastOption_CreateSocketSetGetOption_GroupAndInterfaceIndex_SetS public async Task MulticastInterface_Set_AnyInterface_Succeeds() { // On all platforms, index 0 means "any interface" - await MulticastInterface_Set_Helper(0); + try + { + await MulticastInterface_Set_Helper(0); + } + catch (SocketException ex) when (ex.SocketErrorCode == SocketError.HostUnreachable && PlatformDetection.IsApplePlatform) + { + // https://github.com/dotnet/runtime/issues/114450 + throw new SkipTestException("HostUnreachable indicates missing local network permission; this test might pass or fail depending on the environment. Please verify manually."); + } } [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsNotWindowsNanoNorServerCore))] // Skip on Nano: https://github.com/dotnet/runtime/issues/26286 From 30cd584ea5e6fa9acab3e326187666928fe0dee3 Mon Sep 17 00:00:00 2001 From: Tomas Weinfurt Date: Fri, 9 Jan 2026 17:58:10 +0000 Subject: [PATCH 5/7] skip timeout ping tests if test targets are unreachable (#122987) fixes #115358 --- .../System.Net.Ping/tests/FunctionalTests/PingTest.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs b/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs index 98403c5570e9d2..06e0c97ebc12d3 100644 --- a/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs +++ b/src/libraries/System.Net.Ping/tests/FunctionalTests/PingTest.cs @@ -803,15 +803,20 @@ private async Task Ping_TimedOut_Core(Func> sendPi reply = await sendPing(sender, TestSettings.UnreachableAddress3); } + if (reply.Status == IPStatus.DestinationNetworkUnreachable) + { + throw new SkipTestException("Unable to verify timeouts. Skipping test."); + } + Assert.Equal(IPStatus.TimedOut, reply.Status); } - [Fact] + [ConditionalFact] [OuterLoop] public Task Ping_TimedOut_Sync_Success() => Ping_TimedOut_Core((sender, address) => Task.Run(() => sender.Send(address))); - [Fact] + [ConditionalFact] [OuterLoop] public Task Ping_TimedOut_EAP_Success() => Ping_TimedOut_Core(async (sender, address) => @@ -841,7 +846,7 @@ static void PingCompleted(object sender, PingCompletedEventArgs e) return reply; }); - [Fact] + [ConditionalFact] [OuterLoop] public Task Ping_TimedOut_TAP_Success() => Ping_TimedOut_Core((sender, address) => sender.SendPingAsync(address)); From 95a5b63ef264669f3fa81da392d2abb66b983aa7 Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Sat, 10 Jan 2026 12:28:15 -0500 Subject: [PATCH 6/7] Bump the ios / tvos queues while we're at it. Subset of https://github.com/dotnet/runtime/pull/122702 --- eng/pipelines/coreclr/templates/helix-queues-setup.yml | 4 ++-- eng/pipelines/libraries/helix-queues-setup.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/pipelines/coreclr/templates/helix-queues-setup.yml b/eng/pipelines/coreclr/templates/helix-queues-setup.yml index 0137ce3f255210..26e8713e36a3ce 100644 --- a/eng/pipelines/coreclr/templates/helix-queues-setup.yml +++ b/eng/pipelines/coreclr/templates/helix-queues-setup.yml @@ -54,11 +54,11 @@ jobs: # iOS devices - ${{ if in(parameters.platform, 'ios_arm64') }}: - - OSX.13.Amd64.Iphone.Open + - OSX.15.Amd64.Iphone.Open # tvOS devices - ${{ if in(parameters.platform, 'tvos_arm64') }}: - - OSX.13.Amd64.AppleTV.Open + - OSX.15.Amd64.AppleTV.Open # Linux arm - ${{ if eq(parameters.platform, 'linux_arm') }}: diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml index f7e5a4bc550b3d..159fc20921848c 100644 --- a/eng/pipelines/libraries/helix-queues-setup.yml +++ b/eng/pipelines/libraries/helix-queues-setup.yml @@ -100,11 +100,11 @@ jobs: # iOS devices - ${{ if in(parameters.platform, 'ios_arm64') }}: - - OSX.13.Amd64.Iphone.Open + - OSX.15.Amd64.Iphone.Open # tvOS devices - ${{ if in(parameters.platform, 'tvos_arm64') }}: - - OSX.13.Amd64.AppleTV.Open + - OSX.15.Amd64.AppleTV.Open # windows x64 - ${{ if eq(parameters.platform, 'windows_x64') }}: From d3dfcee167cef434ec405481682365b10c7924f2 Mon Sep 17 00:00:00 2001 From: Steve Pfister Date: Mon, 12 Jan 2026 08:03:11 -0500 Subject: [PATCH 7/7] Skip MatchesCodesignOutput test similar to upstream --- .../MachObjectSigning/SigningTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/installer/tests/Microsoft.NET.HostModel.Tests/MachObjectSigning/SigningTests.cs b/src/installer/tests/Microsoft.NET.HostModel.Tests/MachObjectSigning/SigningTests.cs index b1ed8eada30fcd..9ce6d66c54782b 100644 --- a/src/installer/tests/Microsoft.NET.HostModel.Tests/MachObjectSigning/SigningTests.cs +++ b/src/installer/tests/Microsoft.NET.HostModel.Tests/MachObjectSigning/SigningTests.cs @@ -77,7 +77,7 @@ public void CanUnsignAndResign(string filePath, TestArtifact _) Assert.True(IsSigned(managedSignedPath + ".resigned"), $"Failed to resign {filePath}"); } - [Theory] + [Theory(Skip = "Temporarily disabled due to macOS 26 codesign behavior change - only hashing __TEXT segment")] [MemberData(nameof(GetTestFilePaths), nameof(MatchesCodesignOutput))] [PlatformSpecific(TestPlatforms.OSX)] void MatchesCodesignOutput(string filePath, TestArtifact _)