For Programmers: Free Programming Magazines  


Home > Archive > Fortran > July 2004 > g77 segmentation fault possible error allocating large arrays during runtime









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author g77 segmentation fault possible error allocating large arrays during runtime
blue mannequin

2004-07-28, 9:06 pm

Hello,

Generally I have been using g77 when writing and debugging my programs,
but a different compiler (f77 on an IRIX machine) when running them.
My program compiles and runs fine using f77 on the IRIX. It also compiles
fine using g77 but crashes when running with a segmentation fault. After
some debugging it appears that the segmentation fault occurs after g77 has
allocated about 10MB of memory for use in arrays during runtime. If I
change the size of the arrays used (my program integrates over a 2D grid)
and so it is easy to reduce the number of points on the grid) the program
will run fine using g77. Also if I add arrays e.g. for temporary storage
of intermediate results the program will crash with a segmentation fault
at the start of the subroutine that allocates these new arrays (presuming
they are large enough).

Can anyone explain this since I prefer to use linux and g77 for
debugging(with ddd using gdb) and also i work quite a lot from home (linux).

I am guessing at this point that the program compiled with g77 can't
handle large arrays properly. (I have over 256MB RAM on any machine I use
g77 with at work or at home.)

Thanks in advance.

Dave

p.s. i use only the option -g. Also I have just attempted compilation
without the -g flag and adding the optimisation switch -O2 with the same
result.
David Grant

2004-07-28, 9:06 pm

Hi George and Jan,

This is "bluemannequin" from my work address. The above was the first
time I've posted to a news group. Very pleasantly surprised by the
quickness of the response (i didn't expect any this soon hence the
comparative slowness of my reply). Many thanks. To business:

It was a problem with the stacksize. On the IRIX machine it had already
been set to unlimited (but not on the linux machines). Running the
following command fixed the problem:

limit stacksize unlimited

I added this also to my .cshrc file.

Thanks again,

Dave

On Tue, 27 Jul 2004 15:03:08 +0200, Jan Vorbrüggen wrote:

> First step in such cases is to check on limits (stacksizes and such) and to
> remove them or increase them to the max.
>
> Of course, there is also the possibility that there's a bug in your code and
> that you access an array out of bounds, said access going to an invalid
> address only in the case of larger array bounds.
>
> Jan


blue mannequin

2004-07-29, 3:56 am

Also...

limit stacksize unlimited only worked on the linux machines at work. For
my home computer I had to use the command ulimit -s unlimited.

Cheers,

Dave
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com