Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,15 @@ private bool Next(StackWalkData handle)
{
handle.FrameIter.Next();
}
else if (!IsManaged(handle.Context.InstructionPointer, out _))
{
// The InlinedCallFrame has an active call but the caller's IP is not
// in a known managed code range (e.g. partial dump without JIT code
// heaps). Advance past the frame to prevent an infinite loop — without
// managed code range data the walker would repeatedly re-process the
// same InlinedCallFrame.
handle.FrameIter.Next();
}
Comment on lines +100 to +108

Copilot AI Apr 17, 2026

Copy link

Choose a reason for hiding this comment

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

The new edge-case behavior (advancing past an active InlinedCallFrame when the caller IP is not recognized as managed) isn’t covered by automated tests. To prevent regressions (and to ensure the infinite-loop scenario is caught), please add a targeted test that simulates an InlinedCallFrame with an active call where ExecutionManager cannot resolve the caller IP (GetCodeBlockHandle returns null) and verifies CreateStackWalk terminates / advances frames.

Copilot generated this review using guidance from repository custom instructions.
break;
case StackWalkState.SW_ERROR:
case StackWalkState.SW_COMPLETE:
Expand Down
Loading