[Lldb-commits] [lldb] ab7fcf2 - [LLDB] CommandObjectThreadUntil::DoExecute() sets the wrong selected thread ID

Venkata Ramanaiah Nalamothu via lldb-commits lldb-commits at lists.llvm.org
Tue Jun 14 20:22:36 PDT 2022


Author: Venkata Ramanaiah Nalamothu
Date: 2022-06-15T08:52:29+05:30
New Revision: ab7fcf24849d9365785dc981613e761e388e560d

URL: https://github.com/llvm/llvm-project/commit/ab7fcf24849d9365785dc981613e761e388e560d
DIFF: https://github.com/llvm/llvm-project/commit/ab7fcf24849d9365785dc981613e761e388e560d.diff

LOG: [LLDB] CommandObjectThreadUntil::DoExecute() sets the wrong selected thread ID

For the 'thread until' command, the selected thread ID, to perform the operation on, could be of the current thread or the specified thread.

Reviewed By: jingham

Differential Revision: https://reviews.llvm.org/D48865

Added: 
    

Modified: 
    lldb/source/Commands/CommandObjectThread.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp
index 95a8301a318a3..11affe8a7c13e 100644
--- a/lldb/source/Commands/CommandObjectThread.cpp
+++ b/lldb/source/Commands/CommandObjectThread.cpp
@@ -984,8 +984,8 @@ class CommandObjectThreadUntil : public CommandObjectParsed {
           thread->GetStackFrameAtIndex(m_options.m_frame_idx).get();
       if (frame == nullptr) {
         result.AppendErrorWithFormat(
-            "Frame index %u is out of range for thread %u.\n",
-            m_options.m_frame_idx, m_options.m_thread_idx);
+            "Frame index %u is out of range for thread id %" PRIu64 ".\n",
+            m_options.m_frame_idx, thread->GetID());
         return false;
       }
 
@@ -1002,9 +1002,8 @@ class CommandObjectThreadUntil : public CommandObjectParsed {
 
         if (line_table == nullptr) {
           result.AppendErrorWithFormat("Failed to resolve the line table for "
-                                       "frame %u of thread index %u.\n",
-                                       m_options.m_frame_idx,
-                                       m_options.m_thread_idx);
+                                       "frame %u of thread id %" PRIu64 ".\n",
+                                       m_options.m_frame_idx, thread->GetID());
           return false;
         }
 
@@ -1090,13 +1089,18 @@ class CommandObjectThreadUntil : public CommandObjectParsed {
           return false;
         }
       } else {
-        result.AppendErrorWithFormat(
-            "Frame index %u of thread %u has no debug information.\n",
-            m_options.m_frame_idx, m_options.m_thread_idx);
+        result.AppendErrorWithFormat("Frame index %u of thread id %" PRIu64
+                                     " has no debug information.\n",
+                                     m_options.m_frame_idx, thread->GetID());
         return false;
       }
 
-      process->GetThreadList().SetSelectedThreadByID(m_options.m_thread_idx);
+      if (!process->GetThreadList().SetSelectedThreadByID(thread->GetID())) {
+        result.AppendErrorWithFormat(
+            "Failed to set the selected thread to thread id %" PRIu64 ".\n",
+            thread->GetID());
+        return false;
+      }
 
       StreamString stream;
       Status error;


        


More information about the lldb-commits mailing list