This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: simple C program crashes at run time
- From: "Gerrit P. Haase" <gp at familiehaase dot de>
- To: user at lngs dot infn dot it
- Cc: cygwin at cygwin dot com
- Date: Thu, 12 Aug 2004 13:11:32 +0200
- Subject: Re: simple C program crashes at run time
- Organization: Esse keine toten Tiere
- References: <1092304835.13420.ezmlm@cygwin.com> <200408121041.MAA00181@gsnet0.lngs.infn.it>
- Reply-to: "Gerrit @ cygwin" <cygwin at cygwin dot com>
Hallo user,
Am Donnerstag, 12. August 2004 um 12:47 schriebst du:
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #define TAGLIA 415
> main()
> {
> int i, j, k, iran;
> unsigned int seed;
> float unran;
> float mata[TAGLIA][TAGLIA],
> matb[TAGLIA][TAGLIA],
> matc[TAGLIA][TAGLIA];
> srand(seed);
> printf("init start...\n");
> /* this should init all elements with pseudo-random float values */
> for(i=0;i<TAGLIA;i++)
> {
> for(j=0;j<TAGLIA;j++)
> {
> iran=rand(); unran = iran / 1.0E10;
> mata[i][j]=unran;
> iran=rand(); unran = iran / 1.0E10;
> matb[i][j]=unran; matc[i][j] = 0.0;
> }
> }
> printf("init end.....\n");
> /* do something to grab cpu-time */
> for(i=0;i<TAGLIA;i++)
> {
> for(j=0;j<TAGLIA;j++)
> {
> for (k=0;k<TAGLIA;k++)
> matc[i][j]=matc[i][j]+mata[i][k]*matb[k][j];
> }
> }
> printf("all done.....\n");
> }
> No informational and/or warnings while building it:
> gcc unlucky.c -o unlucky.exe
> It works for TAGLIA < 416
> With TAGLIA = 416 it looks unusually fast and without outputs
> with TAGLIA > 416 it crashes:
> sysnaz@wngsnt ~
> $ ./unlucky.exe
> Segmentation fault (core dumped)
> $ more unlucky.exe.stackdump
> Exception: STATUS_STACK_OVERFLOW at eip=00401593
> eax=00001774 ebx=00000004 ecx=00032064 edx=00401098 esi=610F3060
> edi=61005AC0
> ebp=0022F068 esp=0022F05C program=d:\cygwin\home\sysnaz\unlucky.exe,
> pid 1232, thread main
> cs=001B ds=0023 es=0023 fs=0038 gs=0000 ss=0023
> Stack trace:
> Frame Function Args
> 0022F068 00401593 (00000001, 616D5310, 0A0500A8, 0022F0C0)
> 0022F0A8 61005F54 (0022F0C0, 00000000, 00000000, 00000000)
> 0022FF88 6100616B (00000000, 00000000, 00000000, 00000000)
> End of stack trace
> What does it happen? the same code built on linux doesn't
> crashes..
See stackdump: STATUS_STACK_OVERFLOW
> Thanks in advance for help. bye.
Increase the stack (only possible during buildtime):
$ gcc -o unlucky unlucky.c -Wl,--stack,8388608
$ ./unlucky.exe
init start...
init end.....
all done.....
Gerrit
--
=^..^=
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/