Messages in this thread | | | Date | Fri, 23 Mar 2001 21:14:55 +0000 | From | Jonathan Morton <> | Subject | Re: [PATCH] Prevent OOM from killing init |
| |
>The main point is letting malloc fail when the memory cannot be >guaranteed.
If I read various things correctly, malloc() is supposed to fail as you would expect if /proc/sys/vm/overcommit_memory is 0. This is the case on my RH 6.2 box, dunno about yours. I can write a simple test program which simply allocates tons of memory if you like...
...and I did. It filled up my physical and swap memory, and got killed by the OOM handler before malloc() failed, even though overcommit_memory was set to 0.
*****BAD!*****
Here's my test program and output (on a Duron with 256M physical and 250M swap):
[chromi@beryllium compsci]$ cat make_mem.c #include <stdio.h> #include <stdlib.h>
int main(void) { /* Allocate tons of RAM, print out how far, we get, and exit when we malloc() fails. * We also access each page we allocate, to ensure we really are getting the memory we reserve. * If we are killed by SIGSEGV or by OOM instead of malloc() failing, the VM system is broken. */
char *p; unsigned long pages = 0;
while(1) { p = malloc(1024); if(!p) break; *p = 1; pages++; printf("%lu K\r", pages); }
printf("\n*** malloc() failed!\n");
return 0; } [chromi@beryllium compsci]$ gcc -O -Wall -o make_mem make_mem.c [chromi@beryllium compsci]$ ./make_mem 493625 KKilled [chromi@beryllium compsci]$
-------------------------------------------------------------- from: Jonathan "Chromatix" Morton mail: chromi@cyberspace.org (not for attachments) big-mail: chromatix@penguinpowered.com uni-mail: j.d.morton@lancaster.ac.uk
The key to knowledge is not to rely on people to teach you it.
Get VNC Server for Macintosh from http://www.chromatix.uklinux.net/vnc/
-----BEGIN GEEK CODE BLOCK----- Version 3.12 GCS$/E/S dpu(!) s:- a20 C+++ UL++ P L+++ E W+ N- o? K? w--- O-- M++$ V? PS PE- Y+ PGP++ t- 5- X- R !tv b++ DI+++ D G e+ h+ r++ y+(*) -----END GEEK CODE BLOCK-----
- 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/
| |