You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I initially expected this to be relatively simple, managed methods corresponding to frameless methods and Frames corresponding to runtime code. However, the logic in SFI changes with the FUNCTIONSONLY flag which is used if CLRDataSimpleFrameType = CLRDATA_SIMPFRAME_MANAGED_METHOD.
This filters funclets but seems somewhat inconsistent.
Example
In the following example containing multiple exception handlers, the DAC filtering for only managed methods sometimes, but not always, skips these frames. This appears to be due to logic surrounding funclets and skipping to non-filtering funclets parents, but enumerating to filtering funclets parents.
Full Stackwalk
Highlighted lines are removed in the current DAC behavior.
Highlighted frames are not present in the DAC behavior. With a little more information, it should be trivial to filter the ILStub, but the logic around sometimes filtering ExceptionHandling logic is more complex.
Support filter flags in DAC stack walk API. These filters aren't used in SOS so this is low priority.
Flags:
I initially expected this to be relatively simple, managed methods corresponding to frameless methods and Frames corresponding to runtime code. However, the logic in SFI changes with the
FUNCTIONSONLY
flag which is used ifCLRDataSimpleFrameType = CLRDATA_SIMPFRAME_MANAGED_METHOD
.This filters funclets but seems somewhat inconsistent.
Example
In the following example containing multiple exception handlers, the DAC filtering for only managed methods sometimes, but not always, skips these frames. This appears to be due to logic surrounding funclets and skipping to non-filtering funclets parents, but enumerating to filtering funclets parents.
Full Stackwalk
Highlighted lines are removed in the current DAC behavior.
Managed Only DAC Behavior
Managed Only Naive cDAC Implementation
Highlighted frames are not present in the DAC behavior. With a little more information, it should be trivial to filter the ILStub, but the logic around sometimes filtering ExceptionHandling logic is more complex.
What is going on
ExceptionTracker::FindParentStackFrameForStackWalk
ExceptionTracker::IsUnwoundToTargetParentFrame
The text was updated successfully, but these errors were encountered: