Subject: Re: simple C program crashes at run time
From: "Gerrit P. Haase" <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Thu, 12 Aug 2004 13:11:32 +0200

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/