[Lldb-commits] [lldb] Convert the StackFrameList mutex to a shared mutex. (PR #117252)

via lldb-commits lldb-commits at lists.llvm.org
Mon Dec 9 10:48:02 PST 2024


================
@@ -594,7 +643,7 @@ StackFrameSP StackFrameList::GetFrameAtIndex(uint32_t idx) {
   // GetFramesUpTo will fill m_frames with as many frames as you asked for, if
   // there are that many.  If there weren't then you asked for too many frames.
   // GetFramesUpTo returns true if interrupted:
-  if (GetFramesUpTo(idx)) {
+  if (GetFramesUpTo(idx, AllowInterruption, guard)) {
     Log *log = GetLog(LLDBLog::Thread);
     LLDB_LOG(log, "GetFrameAtIndex was interrupted");
     return {};
----------------
jimingham wrote:

You have sharp eyes, thanks!  I missed that code.  It's based on a false premise (GetFramesUpTo fills the stack frames up to the depth requested in both the "concrete frames only" case and the "inlined frames".  So this code is redundant (and will always find the required frames filled by the time you get to it.)
However, that issue is a bit moot, as it turns out.  You can only make a "concrete frames only" StackFrameList at construction time by passing true to the `show_inlined_frames` argument.  Nowhere in lldb is that passed as false, and I can't see evidence that we ever made that possible.  It is also entirely untested.
I've deleted this code in the patch.
We should probably also discuss whether we need to preserve this "OnlyConcreteFrames" stack feature given that we haven't used it pretty much forever so far as I can see.

https://github.com/llvm/llvm-project/pull/117252


More information about the lldb-commits mailing list