Skip to content

[release/8.0-staging] [mono] Fix class initialization spurious wakeups - #96905

Merged
lambdageek merged 2 commits into
release/8.0-stagingfrom
backport/pr-96903-to-release/8.0-staging
Jan 13, 2024
Merged

lambdageek merged 2 commits into
release/8.0-stagingfrom
backport/pr-96903-to-release/8.0-staging

Conversation

@github-actions

@github-actions github-actions Bot commented Jan 12, 2024

Copy link
Copy Markdown
Contributor

Backport of #96903 to release/8.0-staging

/cc @lambdageek

Customer Impact

Customers running multi-threaded code on mobile platforms may experience crashes at startup or during class initialization. In particular if multiple threads try to call the static constructor for the same type at the same time, the runtime may assert.

Related to #96872 and #96804

This is a regression in .NET SDK 8.0.1 due to #93943

Testing

Manual testing.

Risk

Low.

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

  • The PR target branch is release/X.0-staging, not release/X.0.

  • If the change touches code that ships in a NuGet package, you have added the necessary package authoring and gotten it explicitly reviewed.

the condition variable may be signaled even if the initialization by
the other thread is not done yet.  Handle spurious wakeups the same
way as timeouts: go around once more from the beginning.

Fixes #96872
if we goto retry_top, don't set up a new handle frame that lacks a
matching HANDLE_FUNCTION_RETURN_VAL.

Instead setup the handle frame once upfront
@ghost ghost added the area-VM-meta-mono label Jan 12, 2024
@lambdageek lambdageek added this to the 8.0.x milestone Jan 12, 2024
@lambdageek lambdageek added the Servicing-consider Issue for next servicing release review label Jan 12, 2024
@lambdageek

Copy link
Copy Markdown
Member

@thaystg could you review this one too

@carlossanlop

Copy link
Copy Markdown
Contributor

@lambdageek @thaystg - Friendly reminder that Tuesday January 16th 4pm is the Code Complete deadline for the February Release. If all requirements are met, please merge your PR before that date and time to ensure this fix gets included in that Release.

@lambdageek lambdageek added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jan 13, 2024
@lambdageek

Copy link
Copy Markdown
Member

Approved by tactics in email

@lambdageek
lambdageek merged commit fe8a9d0 into release/8.0-staging Jan 13, 2024
@akoeplinger akoeplinger modified the milestones: 8.0.x, 8.0.2 Jan 14, 2024
@akoeplinger
akoeplinger deleted the backport/pr-96903-to-release/8.0-staging branch January 14, 2024 11:24
@github-actions github-actions Bot locked and limited conversation to collaborators Feb 14, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-VM-meta-mono Servicing-approved Approved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants