[all-commits] [llvm/llvm-project] 755733: [lldb/Target] Track containing StackFrameList to a...

Med Ismail Bennani via All-commits all-commits at lists.llvm.org
Mon Dec 1 17:24:05 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 755733e219a11a265e47cc1e4f63ad2dbb15f41e
      https://github.com/llvm/llvm-project/commit/755733e219a11a265e47cc1e4f63ad2dbb15f41e
  Author: Med Ismail Bennani <ismail at bennani.ma>
  Date:   2025-12-01 (Mon, 01 Dec 2025)

  Changed paths:
    M lldb/include/lldb/Target/ExecutionContext.h
    M lldb/include/lldb/Target/StackFrame.h
    M lldb/include/lldb/Target/StackFrameList.h
    M lldb/include/lldb/lldb-forward.h
    M lldb/source/Target/ExecutionContext.cpp
    M lldb/source/Target/StackFrameList.cpp

  Log Message:
  -----------
  [lldb/Target] Track containing StackFrameList to avoid circular dependencies (#170226)

This change adds tracking of the StackFrameList that produced each frame
by storing a weak pointer (m_frame_list_wp) in both `StackFrame` and
`ExecutionContextRef`.

When resolving frames through `ExecutionContextRef::GetFrameSP`, the
code now first attempts to use the remembered frame list instead of
immediately calling `Thread::GetStackFrameList`. This breaks circular
dependencies that can occur during frame provider initialization, where
creating a frame provider might trigger `ExecutionContext` resolution,
which would then call back into `Thread::GetStackFrameList()`, creating
an infinite loop.

The `StackFrameList` now sets m_frame_list_wp on every frame it creates,
and a new virtual method `GetOriginatingStackFrameList` allows frames to
expose their originating list.

Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list