A test malloc program makes 64-Bit FC-4 dying
Reuben D. Budiardja
techlist at pathfinder.phys.utk.edu
Fri Nov 4 15:14:20 UTC 2005
On Friday 04 November 2005 00:16, Jonathan Berry wrote:
> On 11/3/05, Reuben D. Budiardja <techlist at pathfinder.phys.utk.edu> wrote:
> > Hello,
> > I have a small program that I use to check malloc. The program supposed
> > to exhaust memory (heap) from malloc, then quit.<snip>
> > 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.
<snip>
> > ------ 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
>
> Hi Reuben,
>
> Question: At what value of i does the above program die when on a
> 32-bit machine?
Did you mean the value of "j" ? "i" in this case is the memory address (which
of course varies between machines and runs). But in any case, for an example,
in my 32-bit machine, right before it terminate:
i = 0xbf403008, j = 884
After that, i would be NULL, then it terminates. I found that the value of j
is about the same on different 32-bit machines.
<snip>
> My initial response to your email was that you are seeing a virtual
> memory difference here, whether or not my speculation is completely
> accurate, I think this at least has something to do with it.
hm.. interesting thought. I guess I'll try to poke around to see the virtual
memory differences. This probably gives me a pointer in the right direction.
Thanks.
> What
> exactly are you trying to accomplish with this program? I guess you
> are trying to make sure that someone cannot pull a "fork bomb" like
> resource DoS attack?
Well, actually for my learning purpose and academic reason I started to write
my own malloc version. This program is a rather crude way to check an
implementation of malloc. But then I stumbled on this problem when playing
with different machines, and it got me really curious.
Reuben D. Budiardja
More information about the fedora-list
mailing list