Code Comments
Programming Forum and web based access to our favorite programming groups.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.
Post Follow-up to this messageHi 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 t o > remove them or increase them to the max. > > Of course, there is also the possibility that there's a bug in your code a nd > that you access an array out of bounds, said access going to an invalid > address only in the case of larger array bounds. > > Jan
Post Follow-up to this messageAlso... 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
Post Follow-up to this messagePowered by vBulletin
Copyright 2000-2006 Jelsoft Enterprises Limited.