From: Erik Max Francis Newsgroups: comp.os.msdos.djgpp Subject: Re: Why does this code crash? Date: Mon, 20 Jul 1998 13:01:37 -0700 Organization: Alcyone Systems Lines: 42 Message-ID: <35B3A221.5ED00CB1@alcyone.com> References: <35B3391A DOT 227330DD AT earlham DOT edu> NNTP-Posting-Host: charmaine.alcyone.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Walter Luke wrote: > > I apologize if the problem I'm having is simple--I'm new to C. The > following code generates a general protection fault and crashes the > DOS window. The error message reads, among other things, "Exiting due > to signal SIGSEGV". If someone could look over this and try to see > where the error is, it would be a big help... The error is that you're exceeding the bounds of the array: max AT charmaine:~/tmp% gcc -ggdb gene.c -o gene max AT charmaine:~/tmp% gdb ./gene GDB is free software and you are welcome to distribute copies of it under certain conditions; type "show copying" to see the conditions. There is absolutely no warranty for GDB; type "show warranty" for details. GDB 4.16 (i486-slackware-linux), Copyright 1996 Free Software Foundation, Inc... (gdb) run Starting program: /home/max/tmp/./gene Program received signal SIGSEGV, Segmentation fault. 0x804842f in main () at gene.c:52 52 gene[genepool][7][1]=g; (gdb) bt #0 0x804842f in main () at gene.c:52 #1 0x80480ee in ___crt_dummy__ () (gdb) print genepool $1 = 517 (gdb) quit The program is running. Quit anyway (and kill it)? (y or n) yes gene is only declared to have 500 elements, and you're overwriting that bound. -- Erik Max Francis, &tSftDotIotE / mailto:max AT alcyone DOT com Alcyone Systems / http://www.alcyone.com/max/ San Jose, California, United States / icbm:+37.20.07/-121.53.38 \ I put away my nine, fool / 'cause I'm colorblind. / Ice Cube