Return to BSD News archive
Newsgroups: comp.os.386bsd.questions
Path: sserve!manuel.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!haven.umd.edu!uunet!mnemosyne.cs.du.edu!nyx!smace
From: smace@nyx.cs.du.edu (Scott Mace)
Subject: Re: gcc - large arrays, out of vm - any way to avoid?
Message-ID: <1993Mar4.211900.1782@mnemosyne.cs.du.edu>
X-Disclaimer: Nyx is a public access Unix system run by the University
of Denver for the Denver community. The University has neither
control over nor responsibility for the opinions of users.
Sender: usenet@mnemosyne.cs.du.edu (netnews admin account)
Organization: Nyx, Public Access Unix at U. of Denver Math/CS dept.
References: <9303022137.AA04169@pizzabox.demon.co.uk>
Date: Thu, 4 Mar 93 21:19:00 GMT
Lines: 65
In article <9303022137.AA04169@pizzabox.demon.co.uk> gtoal@gtoal.com (Graham Toal) writes:
>I'm writing a program which has very little source code, but a whapping
>big initialised char array at the head of it. Well, I say 'whapping big',
>but in fact it's only 50K yet its running out of virtual memory during the
>compile (with the error: "prog.c:2683: Virtual memory exhausted.")
>
>I've tried making the array static, or putting it inside main as an auto.
>No help. Any suggestions how to get round this? Do I have to split it
>up into lots of separate arrays? :-( If it's a solution like that that's
>needed, I can hack it myself - I'm really more looking for some life-saving
>flag I can give that'll just make everything work magically... (or even just
>an explanation of why gcc can't cope with this, to satisfy my curiosity...)
>
>This is the gcc that first came out with 386bsd; the machine has 16Mb of
>Ram and I think 8Mb swap space.
>
>Thanks.
>
>#include <stdio.h>
>#include <stdlib.h>
>char prog[] = {
> /* The 50915 elements of this array have been removed for brevity */
>};
>
>int main(int argc, char **argv)
>{
> /* Prog deleted for brevity too - still went wrong with a null main */
> return(1);
>}
I had similar problems with compiling tiff support in xv. There is a
700k worth of arrays in one .h file. I have to set the limit of
datasize in my shell
in csh it looks like this
cputime unlimited
filesize unlimited
datasize 6144 kbytes
stacksize 512 kbytes
coredumpsize unlimited
memoryuse 6916 kbytes
memorylocked unlimited
maxproc 40
openfiles 64
I set the datasize to 30000 kbytes and it worked. note that you might
even want to switch into sigle user mode if you memeory is real tight.
Otherwise your systems will crawl as it tries to swap. I have 16 megs
so my system didn't really crawl, but if you have say 4megs youll want
all the real RAM ou have free.
Depending on the size of the array you may not need to set it that high.
PS. It may have been stacksize that I changed. (it was some time ago)
If you don't think your system can handle it, Then I would suggest that
you try using ref.tfs.com late at night, when few people are on.
Scott Mace
--
*********************************************************************
* Scott Mace internet: smace@nyx.cs.du.edu *
* emace@tenet.edu *
*********************************************************************