Hi,

The patch fixes segfault for i386 on x86_64 when we are stepping in and
only frame 0 is available.

-- 
Best Regards, Tong Shen
Index: source/Target/ThreadPlanStepRange.cpp
===================================================================
--- source/Target/ThreadPlanStepRange.cpp	(revision 215362)
+++ source/Target/ThreadPlanStepRange.cpp	(working copy)
@@ -58,7 +58,9 @@
     m_use_fast_step = GetTarget().GetUseFastStepping();
     AddRange(range);
     m_stack_id = m_thread.GetStackFrameAtIndex(0)->GetStackID();
-    m_parent_stack_id = m_thread.GetStackFrameAtIndex(1)->GetStackID();
+    StackFrameSP parent_stack = m_thread.GetStackFrameAtIndex(1);
+    if (parent_stack)
+      m_parent_stack_id = parent_stack->GetStackID();
 }
 
 ThreadPlanStepRange::~ThreadPlanStepRange ()
@@ -272,7 +274,10 @@
     }
     else
     {
-        StackID cur_parent_id = m_thread.GetStackFrameAtIndex(1)->GetStackID();
+        StackFrameSP cur_parent_frame = m_thread.GetStackFrameAtIndex(1);
+        StackID cur_parent_id;
+        if (cur_parent_frame)
+          cur_parent_id = cur_parent_frame->GetStackID();
         if (m_parent_stack_id.IsValid()
             && cur_parent_id.IsValid()
             && m_parent_stack_id == cur_parent_id)
Index: source/Target/ThreadPlanStepUntil.cpp
===================================================================
--- source/Target/ThreadPlanStepUntil.cpp	(revision 215362)
+++ source/Target/ThreadPlanStepUntil.cpp	(working copy)
@@ -77,7 +77,7 @@
             }
         }
 
-        m_stack_id = m_thread.GetStackFrameAtIndex(frame_idx)->GetStackID();
+        m_stack_id = frame_sp->GetStackID();
 
         // Now set breakpoints on all our return addresses:
         for (size_t i = 0; i < num_addresses; i++)
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to