internal-error: insert_step_resume_breakpoint_at_sal

Andrew Cagney cagney@gnu.org
Tue Jan 18 18:59:00 GMT 2005


Nick Roberts wrote:
> Following my earlier e-mail (Wed, 24 Nov 2004 16:48:06 +1300):
> 
>  > Debugging emacs in CVS with gdb in CVS, I often get an error if I try to step
>  > through the program after setting a breakpoint:
>  > 
>  > To reproduce:
>  > 
>  > gdb emacs
>  > GNU gdb 6.3.50_2004-11-24-cvs
>  > ...
>  > (gdb) b Fsplit_window    (for example)
>  > (gdb) run
>  > 
>  > `C-x 2' in Emacs
>  > 
>  > (gdb) n
>  > infrun.c:2763: internal-error: insert_step_resume_breakpoint_at_sal: Assertion `step_resume_breakpoint == NULL' failed.
>  > A problem internal to GDB has been detected,
> 
> infrun.c (in insert_step_resume_breakpoint_at_sal) says:
> 
>   /* There should never be more than one step-resume breakpoint per
>      thread, so we should never be setting a new
>      step_resume_breakpoint when one is already active.  */
> 
> However, in this case (and presumably others too) there is more than one
> step-resume breakpoint. insert_step_resume_breakpoint_at_sal is called
> at infrun.c:1931 and then infrun.c:1949 through handle_inferior_event:
> 
> First time:
> 
> #0  insert_step_resume_breakpoint_at_sal (sr_sal=
>       {symtab = 0x0, section = 0x0, line = 0, pc = 134872212, end = 0}, sr_id=
>       {stack_addr = 3221220224, code_addr = 134872206, special_addr = 0, stack_addr_p = 1, code_addr_p = 1, special_addr_p = 0}) at infrun.c:2671
> During symbol reading, incomplete CFI data; unspecified registers (e.g., eax) at#1  0x080fbe4f in insert_step_resume_breakpoint_at_frame (return_frame=0x0)
>     at infrun.c:2699

This sal/id ...

> #2  0x080fa6c3 in handle_inferior_event (ecs=0xbffff180) at infrun.c:1931
> #3  0x080f9cb8 in wait_for_inferior () at infrun.c:974
> 
> Second time:
> 
> #0  internal_error (file=0x8221657 "infrun.c", line=2668, 
>     string=0x81ef7a1 "%s: Assertion `%s' failed.") at utils.c:789
> #1  0x080fbdda in insert_step_resume_breakpoint_at_sal (sr_sal=
>       {symtab = 0x0, section = 0x0, line = 0, pc = 134872212, end = 0}, sr_id=
>       {stack_addr = 3221220224, code_addr = 134872206, special_addr = 0, stack_addr_p = 1, code_addr_p = 1, special_addr_p = 0}) at infrun.c:2672

... and this sal/id look identical (true?).

This suggests that rather than inserting two different step-resume 
breakpoints it's inserting the same one twice (for possibly different 
reasons).

Is it possible to determine exactly why the step-resume breakpoint is 
being inserted for each of these cases?  If we know that the testsuite 
becomes possible, and with a testsuite a fix.

Andrew



More information about the Gdb mailing list