Implement ISOSDacInterface::GetJitManagerList in cDAC SOSDacImpl#124815
Implement ISOSDacInterface::GetJitManagerList in cDAC SOSDacImpl#124815
Conversation
|
Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag |
- Add AllCodeHeaps field to cdac_data<EEJitManager> and EEJitManagerAddress global pointer - Update datadescriptor.inc with new type field and global pointer - Add JitManagerInfo struct and GetJitManagerInfo() to IExecutionManager contract - Implement GetJitManagerInfo in ExecutionManagerCore, ExecutionManager_1, ExecutionManager_2 - Define DacpJitManagerInfo struct in ISOSDacInterface.cs - Implement GetJitManagerList in SOSDacImpl.cs with DEBUG comparison - Add unit tests for GetJitManagerInfo (16 new tests, all pass) - Update MockDescriptors.ExecutionManager with EEJitManager type and global Co-authored-by: max-charlamb <44248479+max-charlamb@users.noreply.github.com>
… descriptors Co-authored-by: max-charlamb <44248479+max-charlamb@users.noreply.github.com>
max-charlamb
left a comment
There was a problem hiding this comment.
Pretty close, @copilot address comments.
...ed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: max-charlamb <44248479+max-charlamb@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Implements the cDAC-side ISOSDacInterface::GetJitManagerList by plumbing the EEJitManager address and heap list through CoreCLR data descriptors into the managed ExecutionManager contract, then consuming it from SOSDacImpl with DEBUG legacy-DAC comparison.
Changes:
- Add CoreCLR data descriptor support for
EEJitManager::m_pAllCodeHeapsand expose a global pointer toExecutionManager::m_pEEJitManager. - Add
JitManagerInfo+GetEEJitManagerInfo()to the managedIExecutionManagercontract and implement it inExecutionManagerCore. - Update SOS COM interface/implementation to use a typed
DacpJitManagerInfoand add contract-level unit tests + documentation updates.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.cs | Extends mock target descriptors/globals to model EEJitManager and its heap list pointer. |
| src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs | Adds unit tests validating GetEEJitManagerInfo() across arch/version permutations. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.cs | Replaces GetJitManagerList stub with a contract-backed implementation + DEBUG legacy comparison. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/ISOSDacInterface.cs | Introduces DacpJitManagerInfo and updates COM signature to use a typed pointer. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEJitManager.cs | Adds AllCodeHeaps data-model field read from the target. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.cs | Forwards GetEEJitManagerInfo() to the core implementation. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.cs | Forwards GetEEJitManagerInfo() to the core implementation. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs | Implements GetEEJitManagerInfo() by reading the new global + EEJitManager data. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.cs | Adds Globals.EEJitManagerAddress constant name. |
| src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.cs | Adds JitManagerInfo struct and the new contract method. |
| src/coreclr/vm/datadescriptor/datadescriptor.inc | Exposes EEJitManager.AllCodeHeaps and the EEJitManagerAddress global pointer. |
| src/coreclr/vm/codeman.h | Adds cdac_data access for m_pAllCodeHeaps and exposes m_pEEJitManager pointer location. |
| docs/design/datacontracts/ExecutionManager.md | Documents the new descriptor/global and contract API. |
....Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs
Show resolved
Hide resolved
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/EEJitManager.cs
Show resolved
Hide resolved
|
@copilot , use the CI-Analysis tool to look at the runtime-diagnostics pipeline failures. There is a problem that one of the datadescriptors added does not evaluate to a constant. |
…data<ExecutionManager> Co-authored-by: max-charlamb <44248479+max-charlamb@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.