Skip to content

[release/10.0] Reduce contention in UnwindInfoTable seen during high volume LCG method creation - #129035

Merged
JulieLeeMSFT merged 23 commits into
release/10.0from
backport/pr-128619-to-release/10.0
Jun 24, 2026
Merged

JulieLeeMSFT merged 23 commits into
release/10.0from
backport/pr-128619-to-release/10.0

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 5, 2026 •

Copy link
Copy Markdown
Contributor

Backport of #128619 to release/10.0

/cc @eduardo-vp

Customer Impact

  • Customer reported
  • Found internally

This regression causes test suites to run up to 1.7x slower on Windows in .NET 10. Issue originally reported in #123124.

Regression

  • Yes
  • No

Testing

The fix was verified using two benchmarks mentioned in the original PR. I think this is very specific to situations where a high volume of LCG methods are created simultaneously which explains why the issue was previously missed.

Risk

Medium. It changes the behavior of UnwindInfoTable to fix the regression. However, the change has been in main for ~3 weeks and no issues have been linked to this PR.

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

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

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.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.

@snakefoot

Copy link
Copy Markdown
Contributor

@eduardo-vp Seems like unstable integration-test is failing:

  • coreclr osx x64 Release @ OSX.15.Amd64.Open
    • nativeaot Work Item
      • The Helix Work Item failed. Often this is due to a test crash. Please see the 'Artifacts' tab above for additional logs.
If you’re reading this, that means the Helix work item you’re trying to find the logs for has dead-lettered.

What this means:

- All attempts to retry execution of this work item were unable to complete.  This can be both for infrastructure reasons (problems within Azure) or issues with the work item (for instance, causing a machine to reboot unexpectedly or killing the Helix client on the machine will force a retry).
- No further work will be done for this specific work item, and its exit code is set to an artificial -1 (since it did not complete, there is no real exit code).

Common causes:

- Disabled queue (end-of-life Helix queues are automatically forwarded to deadletter and will fail instantly)
- Unhealthy Helix Client machine(s)
- Queue has been backed up heavily by a large amount of work and was manually purged by the engineering team
- Azure issues (e.g. Service Bus is overloaded)
- Malformed payloads; if Helix cannot download and unzip all payloads successfully, work will retry until dead-lettered.

For follow up:

- Check if your Helix Queue is still enabled, either via the metadata you see by browsing to https://helix.dot.net/api/info/queues?api-version=2019-06-17 or recent emails from the .NET Engineering Infrastructure team.
- Check that all work item payloads are accessible using a browser.
- If you are sending to a non-disabled queue and find this error repeatedly occurring, please contact the dnceng team.
- If a single, specific work item dead letters and others do not, consider local debugging; it may be causing spontaneous reboot (or trigging one intentionally).

@snakefoot

Copy link
Copy Markdown
Contributor

@eduardo-vp Build looks happy now, and just need a rubber-stamp:

Merging permission is enabled for servicing PRs when the 'Servicing-approved' label is applied.

Error: 'Servicing-approved' label not applied to the PR yet. More information: https://github.com/dotnet/runtime/blob/main/docs/project/library-servicing.md#approval-process

@snakefoot

Copy link
Copy Markdown
Contributor

@jkotas Can the back-port of #128619 to NET10 also be approved?

@jkotas

jkotas commented Jun 12, 2026

Copy link
Copy Markdown
Member

@eduardo-vp should take care of pushing the backport through the approval process.

I think it is reasonable to backport it once it has several weeks of bake time in main.

@svick

svick commented Jun 18, 2026

Copy link
Copy Markdown
Member

Hi,

the code complete date for 10.0.10 (the July 2026 release) is 24 June. Make sure to merge this PR on that date at the latest (or explicitly let me know that I should merge it), or it won't make it into that release.

As a reminder, if this is a product change, you also need Tactics approval before merging this PR (test-only or infra-only changes don't require Tactics approval).

@eduardo-vp eduardo-vp added the Servicing-consider Issue for next servicing release review label Jun 23, 2026
Comment thread src/coreclr/vm/codeman.cpp Outdated
@JulieLeeMSFT JulieLeeMSFT added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Jun 24, 2026
@JulieLeeMSFT JulieLeeMSFT added this to the 10.0.x milestone Jun 24, 2026
@JulieLeeMSFT
JulieLeeMSFT merged commit ab591ee into release/10.0 Jun 24, 2026
108 of 109 checks passed
@JulieLeeMSFT
JulieLeeMSFT deleted the backport/pr-128619-to-release/10.0 branch June 24, 2026 17:33
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 25, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-VM-coreclr Servicing-approved Approved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants