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