Skip to content

VNext/unload module mutex - #4

Merged
gimlichael merged 8 commits into
masterfrom
vNext/unload-module-mutex
Oct 20, 2026
Merged

gimlichael merged 8 commits into
masterfrom
vNext/unload-module-mutex

Conversation

@gimlichael

Copy link
Copy Markdown
Member

This pull request fixes module unload mutex collisions between unrelated coverage sessions and records the fix in the changelog as release 10.1.1. Hit files are now used as the mutex name in full, so sessions whose assembly names share a prefix no longer block one another.

Unload mutex fix:

  • The unload mutex is named from the complete hit file name, including the session GUID and last namespace segment, instead of the name with its extension stripped.
  • Unrelated modules and runtimes no longer serialize on a shared mutex through a common assembly-name prefix.
  • A regression test holds a mutex under the legacy prefix name and verifies that the unload completes and the hit data is written.

Changelog:

  • A 10.1.1 patch entry describes the mutex fix for users upgrading from 10.1.0.

The unload mutex was named from the hits file name without its extension, which dropped the session GUID and last namespace segment. Unrelated modules and runtimes could therefore share one mutex through a common assembly-name prefix and block each other. The mutex is now named from the full hits file name, and a regression test covers the legacy prefix collision.
Record the 10.1.1 patch so the fix for module unload mutex collisions between unrelated coverage sessions is documented for users upgrading from 10.1.0.
@gimlichael gimlichael self-assigned this Oct 20, 2026
@greptile-apps

greptile-apps Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The reviewed changes appear safe to merge, with no new blocking issues found.

Summary

Names the unload mutex from the complete hit-file name, keeping unrelated coverage sessions separate.

  • Unrelated coverage sessions use separate unload mutexes.
  • Coverlet packages use updated .NET runtime and Pkcs versions.
  • Ubuntu CI jobs now run on Ubuntu 26.04.

No new actionable issues were found in the changes since the previous review. No previous review threads were supplied. Tests were not run.

Reviews (4) · Last reviewed commit: "✅ read runtime package versions from cen..." · Reviewed by Greptile

gimlichael and others added 6 commits October 20, 2026 19:41
Moves the .NET 10 and .NET 9 runtime pins to their latest patch releases so the solution builds and tests against the current runtime baselines.
Aligns the Pkcs override used by coverlet.core with the latest 8.0 patch release.
References the Pkcs package from the MTP validation test project so its tests use the same centrally managed runtime version as the rest of the solution.
Package layout assertions for net9.0 and net10.0 hard-coded Microsoft.Extensions versions, so they went stale whenever the central package file moved. MtpPackageVersions now reads those runtime versions from Directory.Packages.props, keeping the assertions aligned with the single source of truth.
@gimlichael
gimlichael merged commit 5bd8648 into master Oct 20, 2026
32 of 33 checks passed
@gimlichael
gimlichael deleted the vNext/unload-module-mutex branch October 20, 2026 19:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants