Date: Sun, 1 Jun 1997 16:33:33 +0300 (IDT) From: Eli Zaretskii To: Andrew Crabtree cc: djgpp AT delorie DOT com Subject: Re: One for the Gurus In-Reply-To: <199705311615.AA057665326@typhoon.rose.hp.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk On Sat, 31 May 1997, Andrew Crabtree wrote: > Exiting due to SIGSEGV > General Protection Fault at eip=00003424 > eax=00000004 ebx=00000000 ecx=0004beb1 edx=3a633d52 esi=fffffffc edi=00000001 > ebp=00000001 esp=0004be80 program=C:\DJGPP\TEMP\HELLO.EXE > cs: sel=00a7 base=831b2000 limit=0005ffff > ds: sel=00b7 base=831b2000 limit=0005ffff > es: sel=00b7 base=831b2000 limit=0005ffff > fs: sel=0087 base=00010da0 limit=0000ffff > gs: sel=00c7 base=00000000 limit=ffffffff > ss: sel=00b7 base=831b2000 limit=0005ffff > > Call frame traceback EIPs: > 0x00003424 [snip] > So, my next thought was to load it up into GDB and fix the problem. > Well, no luck. Things run perfectly under GDB. You don't need to reproduce the problem under GDB to know where does it crash. Just load the program and disassemble near the address where it crashes, like so: gdb hello (gdb) disassemble 0x3424 GDB will list the function, if any, that includes the given address. You can then look at the source of the function that bombs and debug further. Of course, this assumes that the EIP belongs to the DJGPP programs (as opposed to the DPMI host); but this assumption seems to hold in your case, as the printed selectors all belong to DJGPP.