Description
Since moving our .NET CI onto native linux-arm64 hosts we see intermittent SIGSEGV crashes of dotnet build, dotnet publish and xUnit testhost processes, strongly correlated with parallel load (multiple concurrent builds/test hosts on one machine). The crash signature matches #127776 (intermittent SIGSEGV in GetThreadLocalStaticBase on macOS arm64, thread-pool threads enumerating immutable collections): our captured crash has a managed thread faulting in dynamically generated (JIT) code with System.Collections.Immutable frames directly above it, on a thread-pool thread.
#127843 ("Fix a series of possible race conditions in thread static variable initialization", merged to main 2026-05-13) appears to address exactly this — missing VolatileStore publication in the TLS index machinery, which is precisely the class of bug a weakly-ordered arm64 machine exposes. We could not find a release/10.0 backport. We would like to request servicing of #127843 to release/10.0 — this affects production CI on current LTS-line runtimes.
Environment
- Hosts: NVIDIA DGX Spark (GB10): 20-core arm64, heterogeneous 10× Cortex-X925 + 10× Cortex-A725, 128 GB unified memory
- OS: Ubuntu 24.04 arm64 (DGX OS), Docker containers from
mcr.microsoft.com/dotnet/sdk:10.0.300-noble
- Runtime in the captured crash:
10.0.826.23019 @Commit: 94ea82652cdd4e0f8046b5bd5becbd11461482ca (runtime 10.0.8)
DOTNET_EnableWriteXorExecute=0 was already set (crashes occur regardless); server GC defaults
- Crashes reproduce on both of our GB10 machines; frequency scales with build/test concurrency (roughly 1 in 5–10 heavily parallel CI runs)
Evidence (createdump crash report, testhost.dll)
process_name: testhost.dll
runtime: 10.0.826.23019 @Commit: 94ea82652cdd4e0f8046b5bd5becbd11461482ca
arch: arm64, threads in dump: 47
parameters: {"ExceptionType": "0x20000000"}
crashed thread (native_id 0x3fb4, is_managed=true):
#0 [dynamic/JIT code] native=0xe86352593138 module_base=0x0
#1 System.Collections.Immutable.dll native=0xe86355913c24 module_base=0xe863558d0000
#2 System.Collections.Immutable.dll native=0xe8635593f904 module_base=0xe863558d0000
#3 System.Collections.Immutable.dll native=0xe8635590e5f0 module_base=0xe863558d0000
#4 System.Collections.Immutable.dll native=0xe86355915614 module_base=0xe863558d0000
#5 System.Linq.dll native=0xe863544fe204
#6 System.Private.CoreLib.dll native=0xe86352923c14
#7 System.Collections.Immutable.dll native=0xe86355931720
#8 System.Collections.Immutable.dll native=0xe8635592f580
#9 Akka.Cluster.dll native=0xe86356d63eb0
... (Akka.Cluster / Akka frames continue)
The workload at crash time is Akka.NET cluster tests — cluster membership state is ImmutableSortedSet-based, i.e. heavy concurrent immutable-collection enumeration on thread-pool threads, the same pattern as #127776's Roslyn/MEF callers.
We also observe occasional non-fatal state corruption in the same suites on these hosts (System.ArgumentException: An item with the same key has already been added in code that is correct on x64 and on serial arm64 runs), consistent with the same publication race hitting non-faulting paths.
Full minidump (23 MB, DOTNET_DbgMiniDumpType=1) plus the complete crash-report JSON are available on request; we capture one for every occurrence now.
What we can offer
- The crash reproduces within hours under a 10-way parallel build/test loop on the GB10 hosts — we can validate a private/serviced build quickly.
- We are rolling out SDK 10.0.301 (runtime 10.0.9); based on the absence of a backport we expect no change and will confirm either way.
Description
Since moving our .NET CI onto native linux-arm64 hosts we see intermittent SIGSEGV crashes of
dotnet build,dotnet publishand xUnittesthostprocesses, strongly correlated with parallel load (multiple concurrent builds/test hosts on one machine). The crash signature matches #127776 (intermittent SIGSEGV inGetThreadLocalStaticBaseon macOS arm64, thread-pool threads enumerating immutable collections): our captured crash has a managed thread faulting in dynamically generated (JIT) code withSystem.Collections.Immutableframes directly above it, on a thread-pool thread.#127843 ("Fix a series of possible race conditions in thread static variable initialization", merged to
main2026-05-13) appears to address exactly this — missingVolatileStorepublication in the TLS index machinery, which is precisely the class of bug a weakly-ordered arm64 machine exposes. We could not find arelease/10.0backport. We would like to request servicing of #127843 to release/10.0 — this affects production CI on current LTS-line runtimes.Environment
mcr.microsoft.com/dotnet/sdk:10.0.300-noble10.0.826.23019 @Commit: 94ea82652cdd4e0f8046b5bd5becbd11461482ca(runtime 10.0.8)DOTNET_EnableWriteXorExecute=0was already set (crashes occur regardless); server GC defaultsEvidence (createdump crash report, testhost.dll)
The workload at crash time is Akka.NET cluster tests — cluster membership state is
ImmutableSortedSet-based, i.e. heavy concurrent immutable-collection enumeration on thread-pool threads, the same pattern as #127776's Roslyn/MEF callers.We also observe occasional non-fatal state corruption in the same suites on these hosts (
System.ArgumentException: An item with the same key has already been addedin code that is correct on x64 and on serial arm64 runs), consistent with the same publication race hitting non-faulting paths.Full minidump (23 MB,
DOTNET_DbgMiniDumpType=1) plus the complete crash-report JSON are available on request; we capture one for every occurrence now.What we can offer