A test malloc program makes 64-Bit FC-4 dying

Reuben D. Budiardja techlist at pathfinder.phys.utk.edu
Thu Nov 3 19:55:07 UTC 2005


Hello,
I have a small program that I use to check malloc. The program supposed to 
exhaust memory (heap) from malloc, then quit. Running this program on a 
32-Bit RHEL 4, RHEL 3, FC-4, I got the program to terminated pretty quicky 
after malloc cannot allocated more memory. 
However, when I run this program on my desktop: AMD64 FC 4 64-bit, the program 
does not terminate after a while. But it grinds this machine to almost to a 
halt, and I got page-swapping, etc. I finally managed to kill the program.

My question is, why does this happen in FC-4 64-bit ? what is the difference 
on this machine and other machine ? This supposedly should not happend since 
I run this program as regular user, and it seems "dangerous" that a regular 
user can almost bring this machine down by running this. 

I checked 'ulimit' on my shell and it's unlimited. But even when I set 'ulimit 
-m 12000', the same thing still happened. On other machines, i didn't have to 
do anything. I've checked also /etc/security/limits.conf and they are all 
default (ie. nothing in it). Below is the program. Any help or info about 
this is appreciated. 

Thanks a lot.

------ kgobble.c----
#include <stdio.h>
#include <string.h>

main()
{
  int *i;
  int j=1;
  char buf[15];

  printf("Starting kgobble\n");

  while(1)
  {
    i=(int *)malloc(8176 * j);
    if (i==0)
    {
      write(1,"Memory exhaustion complete\n",27);
      exit(0);
    }
    sprintf(buf,"%x\n",i);
    write(1,buf,strlen(buf));
    bzero(buf,15);
    j++;
  }
}


RDB




More information about the users mailing list