Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

[release/9.0] [Mono] Fix c11 ARM64 atomics to issue full memory barrier.#115635

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
hoyosjs merged 6 commits intorelease/9.0frombackport/pr-115573-to-release/9.0
May 16, 2025

Conversation

@github-actions
Copy link
Contributor

@github-actionsgithub-actionsbot commentedMay 16, 2025
edited by steveisok
Loading

Backport of#115573 to release/9.0

/cc@steveisok@lateralusX

Customer Impact

  • Customer reported
  • Found internally

Customers both in#114262 and through normal support channels have reported weird and random crashes in their .NET 9 MAUI apps when running on iOS. All of the data provided to us pointed at an issue with Task continuations, but with no clear way to tell why as customers indicated they were doing nothing remarkable when the crashes happened.

A reliable repro was hard to come by and it took some time for us to get something going. Once we had a repro in place, we found an issue with the mono runtime's use of C11 atomics, specifically around when we callInterlocked functions. The callers to these functions have an expectation of a full memory barrier whereas our .NET 9 implementation only guaranteed a half barrier. It just so happensTask makes heavy use of interlocked functions.

The fix adds a full memory barrier around the interlocked functions.

Regression

  • Yes
  • No

We completed C11 atomics support in12ecfe7. This change inadvertently guaranteed a half memory barrier instead a full, breaking consistency expectations.

Testing

We added tests extracted from our repro to validate the before and after. Before the fix, the crash would happen fairly quickly. After the fix was applied, not at all.

As to why we didn't hit this before, we did not have the kind of stress tests in place to simulate the contention customers would see at random.

Risk

Low - even though this is a sensitive area, the fix is targeted and has been well tested.

IMPORTANT: If this backport is for a servicing release, please verify that:

  • The PR target branch isrelease/X.0-staging, notrelease/X.0.

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.

@steveisok
Copy link
Member

Approved by tactics over email.

@steveisoksteveisokenabled auto-merge (squash)May 16, 2025 13:53
@steveisok
Copy link
Member

/ba-g Generic infra timeouts.

@hoyosjshoyosjsdisabled auto-mergeMay 16, 2025 17:43
@hoyosjshoyosjs merged commitdf01702 intorelease/9.0May 16, 2025
133 of 138 checks passed
@steveisoksteveisok deleted the backport/pr-115573-to-release/9.0 branchMay 16, 2025 19:13
@github-actionsgithub-actionsbot locked and limited conversation to collaboratorsJun 16, 2025
Sign up for freeto subscribe to this conversation on GitHub. Already have an account?Sign in.

Reviewers

@steveisoksteveisoksteveisok approved these changes

Assignees

No one assigned

Labels

Servicing-approvedApproved for servicing release

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

5 participants

@steveisok@hoyosjs@lateralusX@rbhanda

[8]ページ先頭

©2009-2025 Movatter.jp