From: Thomas Demmer Newsgroups: comp.os.msdos.djgpp Subject: Re: SIGSEGV error meanings?? Date: Wed, 10 Sep 1997 14:58:53 +0200 Organization: Lehrstuhl fuer Stroemungsmechanik Lines: 64 Message-ID: <3416998C.5B932037@LSTM.Ruhr-UNI-Bochum.De> References: <$pUtJBAbyoF0EwFX AT jenkinsdavid DOT demon DOT co DOT uk> NNTP-Posting-Host: c64.lstm.ruhr-uni-bochum.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit CC: me AT jenkinsdavid DOT demon DOT co DOT uk To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk David Jenkins wrote: > > I sent a copy of my game to a friend which keeps crashing on his system > but never mine. He sent me the SIGSEGV error thing, I read the FAQ > (Aren't I a good little boy?? :) and ran symify on the error, which > looked something like this, > > G:\Hoveroids\code\Game>symify -i bug1.txt hover.exe > Shutting down Allegro > Exiting due to signal SIGSEGV > Page fault at eip=000056ba, error=0004 > eax=69696b6a ebx=0002a7e4 ecx=00b68004 edx=00000000 esi=69696b6a > edi=0089d470 > ebp=ff465f20 esp=ff465ef8 program=C:\MYFILES\TEMP\HOVER.EXE > cs: sel=00a7 base=845b6000 limit=ff465fff > ds: sel=00af base=845b6000 limit=ff465fff > es: sel=00af base=845b6000 limit=ff465fff > fs: sel=00af base=845b6000 limit=ff465fff > gs: sel=00c7 base=00000000 limit=ffffffff > ss: sel=00af base=845b6000 limit=ff465fff > > Call frame traceback EIPs: > 0x000056ba __getpixel+30 > 0x000036be _make_hover_sprites+174, line 300 of init.c > 0x00002de7 _init_display+259, line 72 of init.c > 0x00003cf2 _main+82, line 41 of main.c > 0x0003456e ___crt1_startup+138 > > the , line 300 of init.c are pretty straightforward. > BUT what's the +174 in _make_hover_sprites+174 mean?? > > AND What's this ___crt1_startup+138, and where did it come from?? Is it > something in the startup code or something?? What you see is the stack frame: The starup code __crt1_startup, calls main, the IP is 138 bytes after the the startup entry point. main() calls init_display() in line 41 of the source code, 82 bytes after main's entry point, and so on. The reason why it keeps crashing is that it is somewhere broken, writing to an uninitialized pointer, your friend runs it on plain DOS or another smarter DPMI host, you run it under Win95, which doesn't catch SIGSEGVs. Check out what you do in init.c, line 300. This ones probably the culprit. OK, the last one was just a wild guess from the way you type your prompt... -- Ciao Tom ************************************************************* * Thomas Demmer * * Lehrstuhl fuer Stroemungsmechanik * * Ruhr-Uni-Bochum * * Universitaetsstr. 150 * * D-44780 Bochum * * Tel: +49 234 700 6434 * * Fax: +49 234 709 4162 * * http://www.lstm.ruhr-uni-bochum.de/~demmer * *************************************************************