Vladimir, many thanks for pointing out that C99 is not my native tongue. I plan to submit another segment of code -- this time in guaranteed non-buggy gfortran -- which shows similar behaviour to the buggy gcc code.  In fact the code was originally conceived and written in gfortran, and I attempted (with evident failure as you so graciously point out) to translate it into gcc (seen below) for this linux-mm audience. I hope to gain productive feedback on the causes of the observed behaviour , and its solution, at this listserv because 1) the gfortran code is not buggy and 2) I believe the linux-memory management listserv is the correct forum. I gather that many on this newsgroup may not have installed gfortran by default, but quite possibly someone will be curious to see if s/he can replicate the observed behaviour, and either suggest a workaround or flag it as a feature. Cheers, Max ________________________________ De : Vladimir Murzin À : Max B Cc : "linux-mm@kvack.org" Envoyé le : Jeudi 19 septembre 2013 6h14 Objet : Re: shouldn't gcc use swap space as temp storage?? On Thu, Sep 19, 2013 at 01:25:01AM +0100, Max B wrote: > > > > > > > Hi All, > > See below for executable program. > > > Shouldn't gcc use swap space as temp storage?  Either my machine is set up improperly, or gcc does not (cannot?) access this capability. > > > It seems to me that programs should be able to access swap memory in these cases, but the behaviour has not been confirmed. > > Can someone please confirm or correct me? > It is not because your machine settings or gcc. Your code is buggy. > > Apologies if this is not the correct listserv for the present discussion. > I think the proper list for C related questions is linux-c-programming or similar. Vladimir > > Thanks for any/all help. > > > Cheers, > Max > > > /* >  * This program segfaults with the *bar array declaration. >  * >  * I wonder why it does not write the *foo array to swap space >  * then use the freed ram to allocate *bar. >  * >  * I have explored the shell ulimit parameters to no avail. >  * >  * I have run this as root and in userland with the same outcome. >  * >  * It seems to be a problem internal to gcc, but may also be a kernel issue. >  * >  */ > > #include > #include > > #define NMAX 628757505 > > int main(int argc,char **argv) { >   float *foo,*bar; > >   foo=calloc(NMAX,sizeof(float)); >   fprintf(stderr,"%9.3f %9.3f\n",foo[0],foo[1]); > #if 1 >   bar=calloc(NMAX,sizeof(float)); >   fprintf(stderr,"%9.3f %9.3f\n",bar[0],bar[1]); > #endif > >   return >  0; > }