2004-04-02 Andrew Cagney <cagney@redhat.com>

* frame.c (get_prev_frame_1): Exclude signal trampolines from the
	"previous frame inner to this frame" test.
This commit is contained in:
Andrew Cagney 2004-04-02 20:21:07 +00:00
parent 304396fba9
commit adb54772d2
2 changed files with 9 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2004-04-02 Andrew Cagney <cagney@redhat.com>
* frame.c (get_prev_frame_1): Exclude signal trampolines from the
"previous frame inner to this frame" test.
2004-04-02 Andrew Cagney <cagney@redhat.com> 2004-04-02 Andrew Cagney <cagney@redhat.com>
* frame.c (safe_frame_unwind_memory): New function. * frame.c (safe_frame_unwind_memory): New function.

View file

@ -1792,9 +1792,10 @@ get_prev_frame_1 (struct frame_info *this_frame)
/* Check that this frame's ID isn't inner to (younger, below, next) /* Check that this frame's ID isn't inner to (younger, below, next)
the next frame. This happens when a frame unwind goes backwards. the next frame. This happens when a frame unwind goes backwards.
Since the sentinel frame doesn't really exist, don't compare the Exclude signal trampolines (due to sigaltstack the frame ID can
inner-most against that sentinel. */ go backwards) and sentinel frames (the test is meaningless). */
if (this_frame->level > 0 if (this_frame->next->level >= 0
&& this_frame->next->type != SIGTRAMP_FRAME
&& frame_id_inner (get_frame_id (this_frame), && frame_id_inner (get_frame_id (this_frame),
get_frame_id (this_frame->next))) get_frame_id (this_frame->next)))
error ("Previous frame inner to this frame (corrupt stack?)"); error ("Previous frame inner to this frame (corrupt stack?)");