Mail Archives: djgpp/1998/05/12/07:38:36
On Tue, 12 May 1998, ^Hawk^ wrote:
> Call frame traceback EIPs:
> 0x00008e89 _InfoMail__Fv+1081, line 786 of vgapu.cpp
>
> But the line 786 is simple a "}" for the end of the function
> InfoMail(); ... :((=
Was that program built with -fomit-frame-pointer? If so, it's payback
time: programs compiled this way are difficult to debug because the
stack frames cannot be traced back (the EBP register is used as a
general-purpose register).
>... what excact tould me this output ... what for
> a fault is it ? Please explain it for me!
The only thing that's unusual in this traceback is the value of EBP.
It looks suspiciouslly like the string "3131" (`3' has the ASCII code
of 0x33). So either you have overwritten the stack somewhere in the
code preceding this crash, or maybe it's because you used
-fomit-frame-pointer. I would tend to the first possibility, since it
explains why the GPF happens in the closing "}": the code tried to pop
the stack to get the return address, and GP Faulted because EBP's
value is too large.
> Exiting due to signal SIGSEGV
> General Protection Fault at eip=00008e89
> eax=0011e140 ebx=0011c100 ecx=0000853c edx=0011e140 esi=00000054
> edi=000da5ec
> ebp=33313331 esp=0011a590 program=D:\CPP\EXE\GAMBLER.EXE
> cs: sel=00af base=8303f000 limit=0012ffff
> ds: sel=00b7 base=8303f000 limit=0012ffff
> es: sel=00b7 base=8303f000 limit=0012ffff
> fs: sel=0087 base=00005310 limit=0000ffff
> gs: sel=00c7 base=00000000 limit=ffffffff
> ss: sel=00b7 base=8303f000 limit=0012ffff
- Raw text -