[cDAC] Contract implementations needed for managed stack walking #110758
Labels
area-Diagnostics-coreclr
enhancement
Product code improvement that does NOT require public API changes/additions
tracking
This issue is tracking the completion of other related issues.
Milestone
In order to support SOS
!analyze
the cDAC must implement stack walking through the following APIs:To create a full managed stack walk, two types of stacks must be read. Call frames on the stack and capital "F" Frames representing runtime unmanaged frames. The Frames are pushed and popped to a linked list on the runtime Thread object. For more information see: BOTR Stack Walking.
To unwind managed call frames, we delegate to the existing native unwinding code. For managed frames, all platforms use the Windows unwind logic and codes. For native call frames, this is platform specific. Since we only care about managed call frames, all unwinding uses the Windows implementation under
src/coreclr/unwinder/
. See the following for more information:Simplified Stack Unwinding Algorithm
Work Items
Initial implementation will focus on x64 stack walking before expanding to all supported platforms.
NeedsUpdateRegDisplay()==true
ResumableFrame
PTR_CONTEXT
TransitionFrame
TransitionBlock
PrestubMethodFrame
FaultingExceptionFrame
T_CONTEXT
ThrowControlForThread
after it callsInitAndLink
. Invoke with a two threaded process where one thread is doing work (loop checking volatile variable) and is cancelled using the following API: Implement ControlledExecution API #71661THROW_CONTROL_FOR_THREAD_FUNCTION
SoftwareExceptionFrame
- [cDAC] Implement basic stackwalking #111759T_CONTEXT
FuncEvalFrame
(only relevant for debugging, may not be needed)Console.ReadLine()
while it is executing create a dump. Use OS to create a dump (or WinDBG as a non-invasive attach on the debugged process).HelperMethodFrame
LazyMachState
HijackFrame
InlinedCallFrame
- [cDAC] Implement basic stackwalking #111759TailCallFrame
(Windows x86 only)CONTEXT
.IXCLRDataStackWalk
- [cDAC] Implement basic stackwalking #111759ClrDataAccess::GetFrameName
#112274IXCLRDataStackWalk::Request
support forCLRDATA_REQUEST_REVISION
andCLRDATA_STACK_WALK_REQUEST_SET_FIRST_FRAME
#112275IXCLRDataTask::CreateStackWalk
#112277IXCLRDataTask.CreateStackWalk
#112366CLRDataCreateInstance
#112583Paths Forwards
The text was updated successfully, but these errors were encountered: