You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Servicing backport of #129763. EEClass::SetDictionaryLayout and InstantiatedMethodDesc::IMD_SetDictionaryLayout published m_pDictLayout without release semantics, allowing a concurrent reader on another core to observe a torn/stale pointer and dereference it — an intermittent arm64 SIGSEGV under parallel load. Faults surface in GenericsHelpers.GenericHandleWorker → ClassWithSlotAndModule / MethodWithSlotAndModule.
The m_pDictLayout accessors switch to VolatileLoad/VolatileStore:
This PR's base branch is main, where #129763 already landed, so it carries no diff. The change cherry-picks cleanly onto release/10.0 (git cherry-pick -x bb4ec1f810d, 2 files / 7+ / 7-, no conflicts). To land the backport, comment /backport to release/10.0 on #129763.
Customer Impact
Intermittent crashes of dotnet build / dotnet test / testhost on linux-arm64 under heavy parallel load (~1 in 30 builds), reported from production CI on 20-core GB10 hardware. Also occasional non-fatal ArgumentException: An item with the same key has already been added from the same publication race corrupting dictionary state.
Regression
No. Long-standing weak-memory ordering bug, not a recent regression.
Testing
Reporter built release/10.0 with and without #129763, overlaying only libcoreclr.so, and looped parallel dotnet build -c Release on 2× GB10 under production CI load:
All five unpatched crashes symbolized to the dictionary-layout path. In main since 2026-06-24 with no follow-up issues.
Risk
Low. Narrow memory-ordering strengthening confined to m_pDictLayout publication; no behavior change elsewhere.
Package authoring no longer needed in .NET 9
IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.
The reason will be displayed to describe this comment to others. Learn more.
Copilot was unable to review this pull request because there is no eligible user to bill. To allow Copilot reviews on bot-authored pull requests, enable direct organization billing in your organization's Copilot settings.
Azure Pipelines:
15 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.
Azure Pipelines:
15 pipeline(s) were filtered out due to trigger conditions.
...
Backport of #129763 to release/10.0 — action required
I investigated this backport request. The fix is a narrow, 2-file memory-ordering change (switching the m_pDictLayout accessors to VolatileLoad/VolatileStore), and I confirmed it applies cleanly to release/10.0:
However, this PR cannot carry the backport as-is: its base branch is main, and #129763 already landed in main on 2026-06-24. Against a main base there is no diff to produce (the VolatileLoad/VolatileStore code is already present), and the coding-agent tooling can only add commits on top of this main-based branch — it can't re-base the branch onto release/10.0.
Recommended way to land this
Use the automated servicing backport bot on the original PR, which cherry-picks it onto the release branch and opens a correctly-targeted PR:
That is the mechanism referenced in the issue ("backports should be area-owner-initiated via command") and it produces a PR whose base is release/10.0.
CopilotAI
changed the title
[WIP] Backport fix for SIGSEGV in generic-dictionary resolution to release/10.0
Backport #129763 to release/10.0: volatile access for CoreCLR dictionary layout publication
Jul 17, 2026
Tagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
main PR: #129763
Description
Servicing backport of #129763.
EEClass::SetDictionaryLayoutandInstantiatedMethodDesc::IMD_SetDictionaryLayoutpublishedm_pDictLayoutwithout release semantics, allowing a concurrent reader on another core to observe a torn/stale pointer and dereference it — an intermittent arm64SIGSEGVunder parallel load. Faults surface inGenericsHelpers.GenericHandleWorker→ClassWithSlotAndModule/MethodWithSlotAndModule.The
m_pDictLayoutaccessors switch toVolatileLoad/VolatileStore:src/coreclr/vm/class.h—EEClass::GetDictionaryLayout/SetDictionaryLayoutsrc/coreclr/vm/method.hpp—InstantiatedMethodDesc::GetDictLayoutRaw/IMD_GetDictionaryLayout/IMD_SetDictionaryLayoutImportant
This PR's base branch is
main, where #129763 already landed, so it carries no diff. The change cherry-picks cleanly ontorelease/10.0(git cherry-pick -x bb4ec1f810d, 2 files / 7+ / 7-, no conflicts). To land the backport, comment/backport to release/10.0on #129763.Customer Impact
Intermittent crashes of
dotnet build/dotnet test/testhoston linux-arm64 under heavy parallel load (~1 in 30 builds), reported from production CI on 20-core GB10 hardware. Also occasional non-fatalArgumentException: An item with the same key has already been addedfrom the same publication race corrupting dictionary state.Regression
No. Long-standing weak-memory ordering bug, not a recent regression.
Testing
Reporter built
release/10.0with and without #129763, overlaying onlylibcoreclr.so, and looped paralleldotnet build -c Releaseon 2× GB10 under production CI load:All five unpatched crashes symbolized to the dictionary-layout path. In
mainsince 2026-06-24 with no follow-up issues.Risk
Low. Narrow memory-ordering strengthening confined to
m_pDictLayoutpublication; no behavior change elsewhere.Package authoring no longer needed in .NET 9
IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.
Note
This description was generated by GitHub Copilot.