In order to support SOS !analyze the cDAC must implement stack walking through the following APIs:
IXCLRDataTask::CreateStackWalk();
IXCLRDataStackWalk::Request(DACSTACKPRIV_REQUEST_FRAME_DATA, ...);
IXCLRDataStackWalk::GetContext();
IXCLRDataStackWalk::Next();
For more infomation on stackwalking, see StackWalk.md
Work Items
Lower Priority Items
x64 and arm64 specific Work Items
Initial implementation will focus on x64 stack walking before expanding to all supported platforms.
Lower Priority Items
x86 and arm32 specific Work Items
Paths Forwards
- Independent Work
- Complete Frame support
- Cross-platform building
- Filtering flags
- ARM32/x86 Support. Should wait for x86 to use funclets before adding support?
- SOS Work
- Flip to invoke cDAC directly, allow testing on platforms where the cross-DAC is not available.
- Automated testing
- Testing with customer dumps - Include all required datadescriptors ASAP to allow verification on customer dumps.
- Threat Model
In order to support SOS
!analyzethe cDAC must implement stack walking through the following APIs:For more infomation on stackwalking, see StackWalk.md
Work Items
Covert Frames to use an Enum intead of vptr #111875 - Use enum for frametype not v table #112166 Required to identify Frames through datadescriptors at compile time.
Convert dynamically linked native libs to statically linked [cDAC] Statically link in native dependencies #113627
Fetching initial thread context - [cDAC] Implement core stackwalking #111759
cDAC native interop to call unwinders - [cDAC] Implement core stackwalking #111759
Automate SOS tests to run against cDAC in CI
[cDAC] Implement
ClrDataAccess::GetFrameName#112274[cDAC] Support building and linking cross targeted cDAC unwinders on all platforms #112272
[cDAC] Implement support for filtering on
IXCLRDataTask::CreateStackWalk#112277[cDAC] On ARM64 Linux (maybe other platforms) the contract descriptor is not included in Heap minidumps. #117025
Create cDAC entrypoint same as DAC
CLRDataCreateInstance#112583Lower Priority Items
IXCLRDataTask.CreateStackWalk#112366 - Not used in!analyzeIXCLRDataStackWalk::Requestsupport forCLRDATA_REQUEST_REVISIONandCLRDATA_STACK_WALK_REQUEST_SET_FIRST_FRAME#112275 - Not used in!analyzex64 and arm64 specific Work Items
Initial implementation will focus on x64 stack walking before expanding to all supported platforms.
CONTEXTon x64 and arm64. [cDAC] Implement core stackwalking #111759IXCLRDataStackWalk- [cDAC] Implement core stackwalking #111759Lower Priority Items
x86 and arm32 specific Work Items
CONTEXTon x86 and arm32Paths Forwards