Index: frame.c =================================================================== RCS file: /cvs/src/src/gdb/frame.c,v retrieving revision 1.191 diff -u -p -r1.191 frame.c --- frame.c 1 Sep 2004 14:13:33 -0000 1.191 +++ frame.c 26 Oct 2004 21:13:18 -0000 @@ -1036,14 +1036,20 @@ get_prev_frame_1 (struct frame_info *thi if (this_frame->next->level >= 0 && this_frame->next->unwind->type != SIGTRAMP_FRAME && frame_id_inner (this_id, get_frame_id (this_frame->next))) - error ("Previous frame inner to this frame (corrupt stack?)"); + { + warning ("Previous frame inner to this frame (corrupt stack?)"); + return NULL; + } /* Check that this and the next frame are not identical. If they are, there is most likely a stack cycle. As with the inner-than test above, avoid comparing the inner-most and sentinel frames. */ if (this_frame->level > 0 && frame_id_eq (this_id, get_frame_id (this_frame->next))) - error ("Previous frame identical to this frame (corrupt stack?)"); + { + warning ("Previous frame identical to this frame (corrupt stack?)"); + return NULL; + } /* Allocate the new frame but do not wire it in to the frame chain. Some (bad) code in INIT_FRAME_EXTRA_INFO tries to look along @@ -1199,7 +1205,8 @@ get_prev_frame (struct frame_info *this_ if (this_frame->level > backtrace_limit) { - error ("Backtrace limit of %d exceeded", backtrace_limit); + warning ("Backtrace limit of %d exceeded", backtrace_limit); + return NULL; } /* If we're already inside the entry function for the main objfile,