Normal. You are running OOM. Look at what you do:
while (1)
{
malloc(much mem)
// do not free the mem !!!!
}
So in a couple steps you are OOM.
I suppose what you want to do is
buf = malloc(...)
while (1)
touch random page
But...you 'touch' is read-only (the printf), so the page will never
really be allocated. Try with this:
#include <stdlib.h>
// 4Gb
#define SZ 4*1024*1024*1024
main(){
char *buf;
buf = malloc(SZ);
if (!buf)
{
perror("bad try");
exit(1);
}
while(1){
buf[random()%SZ] = 0;
}
}
Ah, with 2Gb of ram you will need to compile with 3Gb userspace,
to let a one only process allocate a chunk of mem that does not fit
into core memory. Or, easier, run several instances...
-- J.A. Magallon <jamagallon@able.es> \ Software is like sex: werewolf.able.es \ It's better when it's free Mandrake Linux release 9.1 (Cooker) for i586 Linux 2.4.20-jam2 (gcc 3.2 (Mandrake Linux 9.1 3.2-4mdk)) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/