Skip to content

Add DacMode setting to select DAC/cDAC in SOS tests - #5901

Merged
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs
Jun 26, 2026
Merged

Add DacMode setting to select DAC/cDAC in SOS tests#5901
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Jun 25, 2026

Copy link
Copy Markdown
Member

Replaces the scattered cDAC/DAC SOS test toggles with a single DacMode setting, driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from its -dacMode argument).

Modes:

  • cdac -- standalone cDAC (mscordaccore_universal) via SOS hosting
  • cdacfallback -- in-box DAC hosts the cDAC reader, with fallback to the legacy DAC
  • cdacverify -- in-box DAC hosts the cDAC reader, no fallback (still verifies)
  • dac -- legacy in-box DAC only
  • unset -- SOS default load policy

SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC (+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the runtimes --usecdac SOS load policy in LoadSosExtension after SOS is loaded. -cdacPath overlays the runtime-under-test's own cDAC next to sos.dll for the cdac mode.

Paired with dotnet/runtime pipeline changes that exercise these modes as separate SOS legs.

Sample run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1481626&view=logs&j=d359ac0d-403b-5f4f-9a78-93671d33ea9d

Replace the scattered cDAC/DAC test toggles with a single DacMode setting,
driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from
its -dacMode argument). Supported modes:
cdac standalone cDAC (mscordaccore_universal) via SOS hosting
cdacfallback in-box DAC hosts the cDAC reader, with fallback to legacy DAC
cdacverify in-box DAC hosts the cDAC reader, no fallback (verifies)
dac legacy in-box DAC only
(unset) SOS default load policy
SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC
(+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the "runtimes --usecdac" SOS
load policy in LoadSosExtension after SOS is loaded (the command is unavailable
before then). -cdacPath overlays the runtime-under-test's own cDAC next to
sos.dll for the cdac mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates SOS test configuration for selecting between legacy DAC and cDAC into a single DacMode setting (driven by SOS_TEST_DAC_MODE), and wires it through the SOS unit test harness and build scripts to enable distinct test legs for each mode.

Changes:

  • Introduces TestConfiguration.DacMode + DacMode enum parsed from SOS_TEST_DAC_MODE.
  • Updates SOSRunner to apply the selected DAC/cDAC behavior via env vars (DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK) and/or runtimes --usecdac.
  • Replaces legacy CDAC toggles in eng/testsoscdac.* and eng/build.* with -dacMode / SOS_TEST_DAC_MODE (plus optional -cdacPath overlay support).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/tests/SOS.UnitTests/SOSRunner.csApplies DacMode to debugger environment and SOS load policy (runtimes --usecdac); updates define gating for no-fallback testing.
src/Microsoft.Diagnostics.TestHelpers/TestConfiguration.csReplaces boolean CDAC toggles with DacMode parsing and adds DacMode enum + string view suffixes.
eng/testsoscdac.shUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/testsoscdac.cmdUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/build.shAdds -dacMode / -cdacPath argument handling, validation, env-var export, and cDAC overlay copy.
eng/build.ps1Adds -dacMode / -cdacPath arguments, env-var export, and cDAC overlay copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/tests/SOS.UnitTests/SOSRunner.cs Outdated
Comment threadeng/build.ps1
Comment threadeng/build.sh
Max Charlamband others added 2 commits June 25, 2026 14:49
Drop the redundant TestHelpers. namespace qualifier on the enum values in the
DacMode getter, matching the unqualified usage in the suffix switch above.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fully-qualify the DacMode cref in TestConfiguration so it is unambiguous.
- Clarify the SOSRunner comment: DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK are set on
the debugger (host) process and read by the in-box DAC loaded there, not the
debuggee.
- Create the destination directory before overlaying the cDAC (-cdacPath works
even with -skipnative) in build.ps1 and build.sh.
- Document -dacmode/-cdacpath in build.sh usage_list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hoyosjshoyosjs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only feedback is the flag names aren't obvious, but this will make some scenarios easier to test.

@hoyosjs
hoyosjs merged commit 82218b9 into dotnet:mainJun 26, 2026
19 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@max-charlamb@hoyosjs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add DacMode setting to select DAC/cDAC in SOS tests by max-charlamb · Pull Request #5901 · dotnet/diagnostics · GitHub
Skip to content

Add DacMode setting to select DAC/cDAC in SOS tests - #5901

Merged
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs
Jun 26, 2026
Merged

Add DacMode setting to select DAC/cDAC in SOS tests#5901
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Jun 25, 2026

Copy link
Copy Markdown
Member

Replaces the scattered cDAC/DAC SOS test toggles with a single DacMode setting, driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from its -dacMode argument).

Modes:

  • cdac -- standalone cDAC (mscordaccore_universal) via SOS hosting
  • cdacfallback -- in-box DAC hosts the cDAC reader, with fallback to the legacy DAC
  • cdacverify -- in-box DAC hosts the cDAC reader, no fallback (still verifies)
  • dac -- legacy in-box DAC only
  • unset -- SOS default load policy

SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC (+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the runtimes --usecdac SOS load policy in LoadSosExtension after SOS is loaded. -cdacPath overlays the runtime-under-test's own cDAC next to sos.dll for the cdac mode.

Paired with dotnet/runtime pipeline changes that exercise these modes as separate SOS legs.

Sample run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1481626&view=logs&j=d359ac0d-403b-5f4f-9a78-93671d33ea9d

Replace the scattered cDAC/DAC test toggles with a single DacMode setting,
driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from
its -dacMode argument). Supported modes:
cdac standalone cDAC (mscordaccore_universal) via SOS hosting
cdacfallback in-box DAC hosts the cDAC reader, with fallback to legacy DAC
cdacverify in-box DAC hosts the cDAC reader, no fallback (verifies)
dac legacy in-box DAC only
(unset) SOS default load policy
SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC
(+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the "runtimes --usecdac" SOS
load policy in LoadSosExtension after SOS is loaded (the command is unavailable
before then). -cdacPath overlays the runtime-under-test's own cDAC next to
sos.dll for the cdac mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates SOS test configuration for selecting between legacy DAC and cDAC into a single DacMode setting (driven by SOS_TEST_DAC_MODE), and wires it through the SOS unit test harness and build scripts to enable distinct test legs for each mode.

Changes:

  • Introduces TestConfiguration.DacMode + DacMode enum parsed from SOS_TEST_DAC_MODE.
  • Updates SOSRunner to apply the selected DAC/cDAC behavior via env vars (DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK) and/or runtimes --usecdac.
  • Replaces legacy CDAC toggles in eng/testsoscdac.* and eng/build.* with -dacMode / SOS_TEST_DAC_MODE (plus optional -cdacPath overlay support).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/tests/SOS.UnitTests/SOSRunner.csApplies DacMode to debugger environment and SOS load policy (runtimes --usecdac); updates define gating for no-fallback testing.
src/Microsoft.Diagnostics.TestHelpers/TestConfiguration.csReplaces boolean CDAC toggles with DacMode parsing and adds DacMode enum + string view suffixes.
eng/testsoscdac.shUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/testsoscdac.cmdUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/build.shAdds -dacMode / -cdacPath argument handling, validation, env-var export, and cDAC overlay copy.
eng/build.ps1Adds -dacMode / -cdacPath arguments, env-var export, and cDAC overlay copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/tests/SOS.UnitTests/SOSRunner.cs Outdated
Comment threadeng/build.ps1
Comment threadeng/build.sh
Max Charlamband others added 2 commits June 25, 2026 14:49
Drop the redundant TestHelpers. namespace qualifier on the enum values in the
DacMode getter, matching the unqualified usage in the suffix switch above.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fully-qualify the DacMode cref in TestConfiguration so it is unambiguous.
- Clarify the SOSRunner comment: DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK are set on
the debugger (host) process and read by the in-box DAC loaded there, not the
debuggee.
- Create the destination directory before overlaying the cDAC (-cdacPath works
even with -skipnative) in build.ps1 and build.sh.
- Document -dacmode/-cdacpath in build.sh usage_list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hoyosjshoyosjs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only feedback is the flag names aren't obvious, but this will make some scenarios easier to test.

@hoyosjs
hoyosjs merged commit 82218b9 into dotnet:mainJun 26, 2026
19 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@max-charlamb@hoyosjs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add DacMode setting to select DAC/cDAC in SOS tests by max-charlamb · Pull Request #5901 · dotnet/diagnostics · GitHub
Skip to content

Add DacMode setting to select DAC/cDAC in SOS tests - #5901

Merged
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs
Jun 26, 2026
Merged

Add DacMode setting to select DAC/cDAC in SOS tests#5901
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Jun 25, 2026

Copy link
Copy Markdown
Member

Replaces the scattered cDAC/DAC SOS test toggles with a single DacMode setting, driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from its -dacMode argument).

Modes:

  • cdac -- standalone cDAC (mscordaccore_universal) via SOS hosting
  • cdacfallback -- in-box DAC hosts the cDAC reader, with fallback to the legacy DAC
  • cdacverify -- in-box DAC hosts the cDAC reader, no fallback (still verifies)
  • dac -- legacy in-box DAC only
  • unset -- SOS default load policy

SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC (+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the runtimes --usecdac SOS load policy in LoadSosExtension after SOS is loaded. -cdacPath overlays the runtime-under-test's own cDAC next to sos.dll for the cdac mode.

Paired with dotnet/runtime pipeline changes that exercise these modes as separate SOS legs.

Sample run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1481626&view=logs&j=d359ac0d-403b-5f4f-9a78-93671d33ea9d

Replace the scattered cDAC/DAC test toggles with a single DacMode setting,
driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from
its -dacMode argument). Supported modes:
cdac standalone cDAC (mscordaccore_universal) via SOS hosting
cdacfallback in-box DAC hosts the cDAC reader, with fallback to legacy DAC
cdacverify in-box DAC hosts the cDAC reader, no fallback (verifies)
dac legacy in-box DAC only
(unset) SOS default load policy
SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC
(+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the "runtimes --usecdac" SOS
load policy in LoadSosExtension after SOS is loaded (the command is unavailable
before then). -cdacPath overlays the runtime-under-test's own cDAC next to
sos.dll for the cdac mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates SOS test configuration for selecting between legacy DAC and cDAC into a single DacMode setting (driven by SOS_TEST_DAC_MODE), and wires it through the SOS unit test harness and build scripts to enable distinct test legs for each mode.

Changes:

  • Introduces TestConfiguration.DacMode + DacMode enum parsed from SOS_TEST_DAC_MODE.
  • Updates SOSRunner to apply the selected DAC/cDAC behavior via env vars (DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK) and/or runtimes --usecdac.
  • Replaces legacy CDAC toggles in eng/testsoscdac.* and eng/build.* with -dacMode / SOS_TEST_DAC_MODE (plus optional -cdacPath overlay support).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/tests/SOS.UnitTests/SOSRunner.csApplies DacMode to debugger environment and SOS load policy (runtimes --usecdac); updates define gating for no-fallback testing.
src/Microsoft.Diagnostics.TestHelpers/TestConfiguration.csReplaces boolean CDAC toggles with DacMode parsing and adds DacMode enum + string view suffixes.
eng/testsoscdac.shUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/testsoscdac.cmdUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/build.shAdds -dacMode / -cdacPath argument handling, validation, env-var export, and cDAC overlay copy.
eng/build.ps1Adds -dacMode / -cdacPath arguments, env-var export, and cDAC overlay copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/tests/SOS.UnitTests/SOSRunner.cs Outdated
Comment threadeng/build.ps1
Comment threadeng/build.sh
Max Charlamband others added 2 commits June 25, 2026 14:49
Drop the redundant TestHelpers. namespace qualifier on the enum values in the
DacMode getter, matching the unqualified usage in the suffix switch above.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fully-qualify the DacMode cref in TestConfiguration so it is unambiguous.
- Clarify the SOSRunner comment: DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK are set on
the debugger (host) process and read by the in-box DAC loaded there, not the
debuggee.
- Create the destination directory before overlaying the cDAC (-cdacPath works
even with -skipnative) in build.ps1 and build.sh.
- Document -dacmode/-cdacpath in build.sh usage_list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hoyosjshoyosjs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only feedback is the flag names aren't obvious, but this will make some scenarios easier to test.

@hoyosjs
hoyosjs merged commit 82218b9 into dotnet:mainJun 26, 2026
19 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@max-charlamb@hoyosjs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add DacMode setting to select DAC/cDAC in SOS tests by max-charlamb · Pull Request #5901 · dotnet/diagnostics · GitHub
Skip to content

Add DacMode setting to select DAC/cDAC in SOS tests - #5901

Merged
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs
Jun 26, 2026
Merged

Add DacMode setting to select DAC/cDAC in SOS tests#5901
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Jun 25, 2026

Copy link
Copy Markdown
Member

Replaces the scattered cDAC/DAC SOS test toggles with a single DacMode setting, driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from its -dacMode argument).

Modes:

  • cdac -- standalone cDAC (mscordaccore_universal) via SOS hosting
  • cdacfallback -- in-box DAC hosts the cDAC reader, with fallback to the legacy DAC
  • cdacverify -- in-box DAC hosts the cDAC reader, no fallback (still verifies)
  • dac -- legacy in-box DAC only
  • unset -- SOS default load policy

SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC (+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the runtimes --usecdac SOS load policy in LoadSosExtension after SOS is loaded. -cdacPath overlays the runtime-under-test's own cDAC next to sos.dll for the cdac mode.

Paired with dotnet/runtime pipeline changes that exercise these modes as separate SOS legs.

Sample run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1481626&view=logs&j=d359ac0d-403b-5f4f-9a78-93671d33ea9d

Replace the scattered cDAC/DAC test toggles with a single DacMode setting,
driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from
its -dacMode argument). Supported modes:
cdac standalone cDAC (mscordaccore_universal) via SOS hosting
cdacfallback in-box DAC hosts the cDAC reader, with fallback to legacy DAC
cdacverify in-box DAC hosts the cDAC reader, no fallback (verifies)
dac legacy in-box DAC only
(unset) SOS default load policy
SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC
(+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the "runtimes --usecdac" SOS
load policy in LoadSosExtension after SOS is loaded (the command is unavailable
before then). -cdacPath overlays the runtime-under-test's own cDAC next to
sos.dll for the cdac mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates SOS test configuration for selecting between legacy DAC and cDAC into a single DacMode setting (driven by SOS_TEST_DAC_MODE), and wires it through the SOS unit test harness and build scripts to enable distinct test legs for each mode.

Changes:

  • Introduces TestConfiguration.DacMode + DacMode enum parsed from SOS_TEST_DAC_MODE.
  • Updates SOSRunner to apply the selected DAC/cDAC behavior via env vars (DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK) and/or runtimes --usecdac.
  • Replaces legacy CDAC toggles in eng/testsoscdac.* and eng/build.* with -dacMode / SOS_TEST_DAC_MODE (plus optional -cdacPath overlay support).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/tests/SOS.UnitTests/SOSRunner.csApplies DacMode to debugger environment and SOS load policy (runtimes --usecdac); updates define gating for no-fallback testing.
src/Microsoft.Diagnostics.TestHelpers/TestConfiguration.csReplaces boolean CDAC toggles with DacMode parsing and adds DacMode enum + string view suffixes.
eng/testsoscdac.shUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/testsoscdac.cmdUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/build.shAdds -dacMode / -cdacPath argument handling, validation, env-var export, and cDAC overlay copy.
eng/build.ps1Adds -dacMode / -cdacPath arguments, env-var export, and cDAC overlay copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/tests/SOS.UnitTests/SOSRunner.cs Outdated
Comment threadeng/build.ps1
Comment threadeng/build.sh
Max Charlamband others added 2 commits June 25, 2026 14:49
Drop the redundant TestHelpers. namespace qualifier on the enum values in the
DacMode getter, matching the unqualified usage in the suffix switch above.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fully-qualify the DacMode cref in TestConfiguration so it is unambiguous.
- Clarify the SOSRunner comment: DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK are set on
the debugger (host) process and read by the in-box DAC loaded there, not the
debuggee.
- Create the destination directory before overlaying the cDAC (-cdacPath works
even with -skipnative) in build.ps1 and build.sh.
- Document -dacmode/-cdacpath in build.sh usage_list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hoyosjshoyosjs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only feedback is the flag names aren't obvious, but this will make some scenarios easier to test.

@hoyosjs
hoyosjs merged commit 82218b9 into dotnet:mainJun 26, 2026
19 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@max-charlamb@hoyosjs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add DacMode setting to select DAC/cDAC in SOS tests by max-charlamb · Pull Request #5901 · dotnet/diagnostics · GitHub
Skip to content

Add DacMode setting to select DAC/cDAC in SOS tests - #5901

Merged
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs
Jun 26, 2026
Merged

Add DacMode setting to select DAC/cDAC in SOS tests#5901
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Jun 25, 2026

Copy link
Copy Markdown
Member

Replaces the scattered cDAC/DAC SOS test toggles with a single DacMode setting, driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from its -dacMode argument).

Modes:

  • cdac -- standalone cDAC (mscordaccore_universal) via SOS hosting
  • cdacfallback -- in-box DAC hosts the cDAC reader, with fallback to the legacy DAC
  • cdacverify -- in-box DAC hosts the cDAC reader, no fallback (still verifies)
  • dac -- legacy in-box DAC only
  • unset -- SOS default load policy

SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC (+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the runtimes --usecdac SOS load policy in LoadSosExtension after SOS is loaded. -cdacPath overlays the runtime-under-test's own cDAC next to sos.dll for the cdac mode.

Paired with dotnet/runtime pipeline changes that exercise these modes as separate SOS legs.

Sample run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1481626&view=logs&j=d359ac0d-403b-5f4f-9a78-93671d33ea9d

Replace the scattered cDAC/DAC test toggles with a single DacMode setting,
driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from
its -dacMode argument). Supported modes:
cdac standalone cDAC (mscordaccore_universal) via SOS hosting
cdacfallback in-box DAC hosts the cDAC reader, with fallback to legacy DAC
cdacverify in-box DAC hosts the cDAC reader, no fallback (verifies)
dac legacy in-box DAC only
(unset) SOS default load policy
SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC
(+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the "runtimes --usecdac" SOS
load policy in LoadSosExtension after SOS is loaded (the command is unavailable
before then). -cdacPath overlays the runtime-under-test's own cDAC next to
sos.dll for the cdac mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates SOS test configuration for selecting between legacy DAC and cDAC into a single DacMode setting (driven by SOS_TEST_DAC_MODE), and wires it through the SOS unit test harness and build scripts to enable distinct test legs for each mode.

Changes:

  • Introduces TestConfiguration.DacMode + DacMode enum parsed from SOS_TEST_DAC_MODE.
  • Updates SOSRunner to apply the selected DAC/cDAC behavior via env vars (DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK) and/or runtimes --usecdac.
  • Replaces legacy CDAC toggles in eng/testsoscdac.* and eng/build.* with -dacMode / SOS_TEST_DAC_MODE (plus optional -cdacPath overlay support).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/tests/SOS.UnitTests/SOSRunner.csApplies DacMode to debugger environment and SOS load policy (runtimes --usecdac); updates define gating for no-fallback testing.
src/Microsoft.Diagnostics.TestHelpers/TestConfiguration.csReplaces boolean CDAC toggles with DacMode parsing and adds DacMode enum + string view suffixes.
eng/testsoscdac.shUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/testsoscdac.cmdUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/build.shAdds -dacMode / -cdacPath argument handling, validation, env-var export, and cDAC overlay copy.
eng/build.ps1Adds -dacMode / -cdacPath arguments, env-var export, and cDAC overlay copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/tests/SOS.UnitTests/SOSRunner.cs Outdated
Comment threadeng/build.ps1
Comment threadeng/build.sh
Max Charlamband others added 2 commits June 25, 2026 14:49
Drop the redundant TestHelpers. namespace qualifier on the enum values in the
DacMode getter, matching the unqualified usage in the suffix switch above.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fully-qualify the DacMode cref in TestConfiguration so it is unambiguous.
- Clarify the SOSRunner comment: DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK are set on
the debugger (host) process and read by the in-box DAC loaded there, not the
debuggee.
- Create the destination directory before overlaying the cDAC (-cdacPath works
even with -skipnative) in build.ps1 and build.sh.
- Document -dacmode/-cdacpath in build.sh usage_list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hoyosjshoyosjs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only feedback is the flag names aren't obvious, but this will make some scenarios easier to test.

@hoyosjs
hoyosjs merged commit 82218b9 into dotnet:mainJun 26, 2026
19 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@max-charlamb@hoyosjs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add DacMode setting to select DAC/cDAC in SOS tests by max-charlamb · Pull Request #5901 · dotnet/diagnostics · GitHub
Skip to content

Add DacMode setting to select DAC/cDAC in SOS tests - #5901

Merged
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs
Jun 26, 2026
Merged

Add DacMode setting to select DAC/cDAC in SOS tests#5901
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Jun 25, 2026

Copy link
Copy Markdown
Member

Replaces the scattered cDAC/DAC SOS test toggles with a single DacMode setting, driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from its -dacMode argument).

Modes:

  • cdac -- standalone cDAC (mscordaccore_universal) via SOS hosting
  • cdacfallback -- in-box DAC hosts the cDAC reader, with fallback to the legacy DAC
  • cdacverify -- in-box DAC hosts the cDAC reader, no fallback (still verifies)
  • dac -- legacy in-box DAC only
  • unset -- SOS default load policy

SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC (+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the runtimes --usecdac SOS load policy in LoadSosExtension after SOS is loaded. -cdacPath overlays the runtime-under-test's own cDAC next to sos.dll for the cdac mode.

Paired with dotnet/runtime pipeline changes that exercise these modes as separate SOS legs.

Sample run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1481626&view=logs&j=d359ac0d-403b-5f4f-9a78-93671d33ea9d

Replace the scattered cDAC/DAC test toggles with a single DacMode setting,
driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from
its -dacMode argument). Supported modes:
cdac standalone cDAC (mscordaccore_universal) via SOS hosting
cdacfallback in-box DAC hosts the cDAC reader, with fallback to legacy DAC
cdacverify in-box DAC hosts the cDAC reader, no fallback (verifies)
dac legacy in-box DAC only
(unset) SOS default load policy
SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC
(+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the "runtimes --usecdac" SOS
load policy in LoadSosExtension after SOS is loaded (the command is unavailable
before then). -cdacPath overlays the runtime-under-test's own cDAC next to
sos.dll for the cdac mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates SOS test configuration for selecting between legacy DAC and cDAC into a single DacMode setting (driven by SOS_TEST_DAC_MODE), and wires it through the SOS unit test harness and build scripts to enable distinct test legs for each mode.

Changes:

  • Introduces TestConfiguration.DacMode + DacMode enum parsed from SOS_TEST_DAC_MODE.
  • Updates SOSRunner to apply the selected DAC/cDAC behavior via env vars (DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK) and/or runtimes --usecdac.
  • Replaces legacy CDAC toggles in eng/testsoscdac.* and eng/build.* with -dacMode / SOS_TEST_DAC_MODE (plus optional -cdacPath overlay support).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/tests/SOS.UnitTests/SOSRunner.csApplies DacMode to debugger environment and SOS load policy (runtimes --usecdac); updates define gating for no-fallback testing.
src/Microsoft.Diagnostics.TestHelpers/TestConfiguration.csReplaces boolean CDAC toggles with DacMode parsing and adds DacMode enum + string view suffixes.
eng/testsoscdac.shUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/testsoscdac.cmdUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/build.shAdds -dacMode / -cdacPath argument handling, validation, env-var export, and cDAC overlay copy.
eng/build.ps1Adds -dacMode / -cdacPath arguments, env-var export, and cDAC overlay copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/tests/SOS.UnitTests/SOSRunner.cs Outdated
Comment threadeng/build.ps1
Comment threadeng/build.sh
Max Charlamband others added 2 commits June 25, 2026 14:49
Drop the redundant TestHelpers. namespace qualifier on the enum values in the
DacMode getter, matching the unqualified usage in the suffix switch above.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fully-qualify the DacMode cref in TestConfiguration so it is unambiguous.
- Clarify the SOSRunner comment: DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK are set on
the debugger (host) process and read by the in-box DAC loaded there, not the
debuggee.
- Create the destination directory before overlaying the cDAC (-cdacPath works
even with -skipnative) in build.ps1 and build.sh.
- Document -dacmode/-cdacpath in build.sh usage_list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hoyosjshoyosjs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only feedback is the flag names aren't obvious, but this will make some scenarios easier to test.

@hoyosjs
hoyosjs merged commit 82218b9 into dotnet:mainJun 26, 2026
19 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@max-charlamb@hoyosjs
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Add DacMode setting to select DAC/cDAC in SOS tests by max-charlamb · Pull Request #5901 · dotnet/diagnostics · GitHub
Skip to content

Add DacMode setting to select DAC/cDAC in SOS tests - #5901

Merged
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs
Jun 26, 2026
Merged

Add DacMode setting to select DAC/cDAC in SOS tests#5901
hoyosjs merged 3 commits into
dotnet:mainfrom
max-charlamb:maxcharlamb/sos-dac-cdac-legs

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Jun 25, 2026

Copy link
Copy Markdown
Member

Replaces the scattered cDAC/DAC SOS test toggles with a single DacMode setting, driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from its -dacMode argument).

Modes:

  • cdac -- standalone cDAC (mscordaccore_universal) via SOS hosting
  • cdacfallback -- in-box DAC hosts the cDAC reader, with fallback to the legacy DAC
  • cdacverify -- in-box DAC hosts the cDAC reader, no fallback (still verifies)
  • dac -- legacy in-box DAC only
  • unset -- SOS default load policy

SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC (+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the runtimes --usecdac SOS load policy in LoadSosExtension after SOS is loaded. -cdacPath overlays the runtime-under-test's own cDAC next to sos.dll for the cdac mode.

Paired with dotnet/runtime pipeline changes that exercise these modes as separate SOS legs.

Sample run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1481626&view=logs&j=d359ac0d-403b-5f4f-9a78-93671d33ea9d

Replace the scattered cDAC/DAC test toggles with a single DacMode setting,
driven by the SOS_TEST_DAC_MODE environment variable (set by eng/build.* from
its -dacMode argument). Supported modes:
cdac standalone cDAC (mscordaccore_universal) via SOS hosting
cdacfallback in-box DAC hosts the cDAC reader, with fallback to legacy DAC
cdacverify in-box DAC hosts the cDAC reader, no fallback (verifies)
dac legacy in-box DAC only
(unset) SOS default load policy
SOSRunner applies the mode: cdacfallback/cdacverify set DOTNET_ENABLE_CDAC
(+CDAC_NO_FALLBACK) on the debuggee; cdac/dac set the "runtimes --usecdac" SOS
load policy in LoadSosExtension after SOS is loaded (the command is unavailable
before then). -cdacPath overlays the runtime-under-test's own cDAC next to
sos.dll for the cdac mode.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates SOS test configuration for selecting between legacy DAC and cDAC into a single DacMode setting (driven by SOS_TEST_DAC_MODE), and wires it through the SOS unit test harness and build scripts to enable distinct test legs for each mode.

Changes:

  • Introduces TestConfiguration.DacMode + DacMode enum parsed from SOS_TEST_DAC_MODE.
  • Updates SOSRunner to apply the selected DAC/cDAC behavior via env vars (DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK) and/or runtimes --usecdac.
  • Replaces legacy CDAC toggles in eng/testsoscdac.* and eng/build.* with -dacMode / SOS_TEST_DAC_MODE (plus optional -cdacPath overlay support).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
FileDescription
src/tests/SOS.UnitTests/SOSRunner.csApplies DacMode to debugger environment and SOS load policy (runtimes --usecdac); updates define gating for no-fallback testing.
src/Microsoft.Diagnostics.TestHelpers/TestConfiguration.csReplaces boolean CDAC toggles with DacMode parsing and adds DacMode enum + string view suffixes.
eng/testsoscdac.shUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/testsoscdac.cmdUpdates CDAC test script to set SOS_TEST_DAC_MODE=cdacfallback.
eng/build.shAdds -dacMode / -cdacPath argument handling, validation, env-var export, and cDAC overlay copy.
eng/build.ps1Adds -dacMode / -cdacPath arguments, env-var export, and cDAC overlay copy.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/Microsoft.Diagnostics.TestHelpers/TestConfiguration.cs Outdated
Comment threadsrc/tests/SOS.UnitTests/SOSRunner.cs Outdated
Comment threadeng/build.ps1
Comment threadeng/build.sh
Max Charlamband others added 2 commits June 25, 2026 14:49
Drop the redundant TestHelpers. namespace qualifier on the enum values in the
DacMode getter, matching the unqualified usage in the suffix switch above.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fully-qualify the DacMode cref in TestConfiguration so it is unambiguous.
- Clarify the SOSRunner comment: DOTNET_ENABLE_CDAC/CDAC_NO_FALLBACK are set on
the debugger (host) process and read by the in-box DAC loaded there, not the
debuggee.
- Create the destination directory before overlaying the cDAC (-cdacPath works
even with -skipnative) in build.ps1 and build.sh.
- Document -dacmode/-cdacpath in build.sh usage_list.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

@hoyosjshoyosjs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only feedback is the flag names aren't obvious, but this will make some scenarios easier to test.

@hoyosjs
hoyosjs merged commit 82218b9 into dotnet:mainJun 26, 2026
19 checks passed
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 26, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@max-charlamb@hoyosjs