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 <murzin.v@xxxxxxxxx>
À : Max B <txtmb@xxxxxxxx>
Cc : "linux-mm@xxxxxxxxx" <linux-mm@xxxxxxxxx>
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 <stdio.h>
> #include <stdlib.h>
>
> #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;
> }