Fix runtime diagnostics SOS test configuration - #133734
Merged
Merged
Conversation
added 3 commits
September 11, 2026 13:08
Publish and restore the runtime-produced cDAC transport package so SOS uses a matching universal DAC and DBI pair. Run the diagnostics build and test phases separately to avoid forwarding build switches into the test invocation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7b2ca30d-742d-402c-8ba5-afec8b6d69a1
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7b2ca30d-742d-402c-8ba5-afec8b6d69a1
Use diagnostics' default PreferCDac policy while restoring the matching cDAC transport package produced by the runtime build. Keep the explicit DAC leg for comparison. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 54f4d112-cbd7-48a7-a105-160bb69fa22d
|
Azure Pipelines: Successfully started running 5 pipeline(s). 11 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
|
Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag |
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
The pipeline changes require final human validation of artifact matching and diagnostics execution.
Pull request overview
Updates the runtime-diagnostics SOS pipeline to use matching runtime, cDAC, and DBI artifacts.
Changes:
- Publishes and restores the runtime-built cDAC transport package.
- Builds interpreter debuggee assets.
- Adds PreferCDac and forced-DAC test legs.
- Separates diagnostics build and test phases.
File summaries
| File | Summary |
|---|---|
eng/pipelines/runtime-diagnostics.yml |
Publishes cDAC artifacts and updates SOS legs. |
eng/pipelines/diagnostics/sos-test-leg.yml |
Configures matching cDAC package handling. |
eng/pipelines/diagnostics/runtime-diag-job.yml |
Restores dependencies and separates build/test execution. |
Review details
- Files reviewed: 3/3 changed files
- Comments generated: 0
- Review effort level: Lite
Use diagnostics' cDAC-only DualRuntimes coverage while continuing to restore the matching runtime-built cDAC transport package. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 54f4d112-cbd7-48a7-a105-160bb69fa22d
steveisok
approved these changes
Sep 11, 2026
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Test-only/build-only behavior is no longer honored, and the intended PreferCDac leg still forces cdac.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (1)
eng/pipelines/diagnostics/runtime-diag-job.yml:239
- Splitting the old combined invocation into unconditional Build and Test tasks removes the existing
testOnly/buildOnlybehavior: regardless of those parameters this template now always runs both tasks. Any caller relying on a test-only or build-only diagnostics job will regress; keep the task conditions/arguments keyed off those parameters, or remove the parameters and their validation if this template is intentionally no longer reusable for those modes.
- powershell: |
& "$(Build.SourcesDirectory)\eng\build.ps1" `
-test `
-skipnative `
-skipmanaged `
- Files reviewed: 3/3 changed files
- Comments generated: 1
- Review effort level: Lite
This was referenced Sep 12, 2026
Member
Author
|
/ba-g fixes most of the SOSTest failures. Last failure will be fixed when dotnet/diagnostics#6026 merges |
max-charlamb
deleted the
dev/max-charlamb/fix-runtime-diagnostics-sos
branch
September 14, 2026 14:46
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fix the runtime-diagnostics SOS test configuration so it uses a coherent set of runtime, cDAC, and DBI artifacts.
Strict cDAC-only coverage
The cDAC leg still passes
-dacMode cdac. Diagnostics maps this toruntimes --usecdac true, selectingOnlyUseCDac: supported runtimes must use standalone cDAC and SOS may not fall back to a legacy DAC.DualRuntimesalso remains covered in this strict mode. dotnet/diagnostics#6026 updates the test for the expected desktop .NET Framework behavior: selecting the desktop runtime succeeds, but its data-access commands must fail because desktop Framework does not support cDAC and fallback is disabled. This preserves the multi-runtime test without weakening the cDAC-only policy.The separate
DACleg passes-dacMode dacand provides explicit legacy-DAC comparison coverage.Matching cDAC transport package
The cDAC and universal DBI must match the runtime being tested. The pipeline keeps them coherent as follows:
runtime.win-x64.Microsoft.DotNet.Cdac.Transport.<version>.nupkg.BuildArtifacts_windows_x64_Release_cdac.cDACjob downloads that artifact into a clean workspace, derives the exact package version from its filename, and exposes the downloaded directory as a local NuGet source./p:PackageWithCDac=true, the filename-derivedruntimewinx64MicrosoftDotNetCdacTransportVersion, and/p:RestoreAdditionalProjectSources=<downloaded artifact>.InstallNativePackages.targetsrestores that exact transport-package version and copies bothmscordaccore_universal.dllandmscordbi_universal.dllbeside SOS. The runtime itself comes from the corresponding same-build CoreCLR artifact throughliveRuntimeDir.As an artifact-level check, the SHA-256 of
mscordaccore_universal.dllinside validation build 1593212's transport package exactly matched the copy in that build's CoreCLR artifact (63E8DFFB...33B27B8). The package also contains the matching same-buildmscordbi_universal.dll.Validation
git diff --checkpasses.diagnosticsBranch=refs/pull/6026/merge.cDAC_windows_x64_releaseandDAC_windows_x64_releasepassed.OnlyUseCDactogether with the transport package produced by the same runtime build.Addresses #133282. Related to #132073 and dotnet/diagnostics#6026.
Note
This pull request description was generated with GitHub Copilot.