This is the mail archive of the gdb-patches@sources.redhat.com 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]

Re: [patch/rfc] Add a sentinel frame


Andrew Cagney wrote:
Then run mainline GDB on x86-64:
(gdb) break main
(gdb) run
(gdb) print func(1)
../../gdb-head/gdb/sentinel-frame.c:102: internal-error: Function sentinal_frame_pop called
A problem internal to GDB has been detected. Further
debugging may prove unreliable.
Quit this debugging session? (y or n)


Attached is a backtrace of this failing GDB.
Any ideas?

Yes!


#6 0x00000000005446d1 in sentinel_frame_pop (frame=0x82c100, cache=0x82c130, regcache=0x850610) at ../../gdb-head/gdb/sentinel-frame.c:102


At this point GDB is hosed.

As I mentioned before, popping the sentinal frame is meaningless so the question is, where did that frame come from.

A wild guess is that it is trying to pop the dummy frame having finished the inferior function call. A confirmation is:

(gdb) break func
(gdb) print func(1)

It should manage to stop in func, the stack being something like (assuming bt doesn't also internal error :-):

(gdb) bt
.... func ...
.... <dummy-frame> ...
.... main ...

Hmm...


(gdb) b func
Breakpoint 1 at 0x4000040f: file prog.c, line 1.
(gdb) bt
#0  func (arg=1) at prog.c:1
#1  <function called from gdb>
#2  func (arg=1) at prog.c:1
Cannot access memory at address 0x3320303236383ae0

Ad #2 - I was in main before 'print func(1)', not in func()...

Returning from func(), causing the dummy-frame to be discarded should then trigger things:

(gdb) finish
... barf ...

(gdb) fin
Run till exit from #0 func (arg=1) at prog.c:1
/ttt/64/src/gdb/sentinel-frame.c:102: internal-error: Function sentinal_frame_pop called
[...]


Michal Ludvig
--
* SuSE CR, s.r.o     * mludvig at suse dot cz
* (+420) 296.545.373 * http://www.suse.cz


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]