From: Michal Mertl Newsgroups: comp.os.msdos.djgpp Subject: Re: Bug caused by ____crtl_startup+138 Date: Wed, 22 Apr 1998 18:08:25 +0200 Organization: Prague University of Economics Lines: 51 Message-ID: References: <3537BABA DOT 7D4D AT cableol DOT co DOT uk> NNTP-Posting-Host: manes.vse.cz Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII In-Reply-To: <3537BABA.7D4D@cableol.co.uk> To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk On Fri, 17 Apr 1998, Allen's wrote: > When I run some programs, I get a crash, when symify-ied I get > ____crtl_startup+138. What does this do, and how can I stop it? > > Source for one of the programs used to compile it: <- snipp -> > int col=0; > int ma,mat,n,y=50,x=50,start,loop,div,k,go; > char map [100][100],row[80][160],drawhat; > > > allegro_init(); > install_keyboard(); > set_gfx_mode(GFX_VGA, 320, 200, 0, 0); A good habit is to always check for results of functions which may fail. Set_gfx_mode is definitely one of them eventhough GFX_VGA can be set probably on every computer. > set_pallete(desktop_pallete); > for (loop = 0; loop < 500; loop++){ > for (start = 80; start > 0; start=start-2){ > > for (n = - (start-2); n < (start/2); n++) > { You can yourself find that values at first iteration are start==80, col==0, x==50, y==50, n==-78 so you are accessing places in memory out of the array bounds, this results in unexpected behaviour of everything :) !!130!! !!-28!! > row [start][col] = map [y+start][x+n]; !!240!! !!-28!! !!-30!! > row [start][col+240] = map [y+n][x-start]; There are some more out of arrays accesses in your code. <- snip the rest of code -> Hope this helps One question: I don't know what _stklen is, but assume it changes stack size of the executable. If so you wouldn't need to enlarge it if you move the array definitions (or declarations ? - never know which is which) out of main and they won't eat the stack. Michal "MiMe" Mertl xmerm05 AT vse DOT cz