This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hello,
I just came across a very particular set of conditions that lead
insert_step_resume_breakpoint_at_frame to be passed a NULL frame,
causing the debugger to crash.
Basically, the debugger was doing a "next". During the course of
this operation, it landed inside a function called by the code
I was stepping over. This function was an internally-genearted
function for which no debugging info is generated. So GDB tried
to insert a breakpoint at the return address. Unfortunately,
trying to get the previous frame failed because of a combination
of factors: - The debugging info was stabs. With stabs, the N_FUN
entries that define a function only provide the function
start address. At this time of writing, the compiler
is not generated the unnamed N_FUN entries used by GCC
to specify the function end address
- The funtion we called is placed immediately after
the main (function).
- This results in GDB thinking that the function we
stepped over from goes over a range of instruction
that is too wide. It ends up including our internally
generated function.
- So get_prev_frame accidently determines that we're inside
the main function, and thus stops the backtracing by
returning a NULL frame.
This is a pretty unlikely situation, but I think we should add an
assert that "return_frame" is not NULL before dereferencing it.
It's a lot cleaner to report an assertion failure rather than crashing.
As for us, we are working on enhancing the compiler to generate that
empty N_FUN stabs entry.
2007-09-14 Joel Brobecker <brobecker@adacore.com>
* infrun.c (insert_step_resume_breakpoint_at_frame): Add assertion
that return_frame is not null.
Tested on x86-linux, no regression. This also prevents the crash
initially observed.
This seems pretty straightforward and safe, but I'll give it a week
for comments before checking in.
--
Joel
Attachment:
infrun.diff
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |