lkml.org 
[lkml]   [2002]   [Dec]   [20]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateFri, 20 Dec 2002 23:37:54 +0100
From"J.A. Magallon" <>
SubjectRe: 2.4.20-aa and LARGE Squid process -> SIGSEGV
On 2002.12.20 Ralf Hildebrandt wrote:
>Hi!
[real problem snipped]
>
>Then we wrote a program which allocates large amounts of memory:
>
>--- snip ---
>#include <stdlib.h>
>#include <stdio.h>
>
>main(){
>  char *buf;
>  long c;
>  FILE *fp;
>
>  fp = fopen("/dev/null","a");
>  while(1){
>    buf = (char *)malloc(100000000);
>    c = random();
>    if (c > 100000000)
>      continue;
>    fprintf(fp,"%c",buf[c]);
>    printf("hier\n");
>  }
>}
>--- snip ---
>
>And we found that this program will be killed with a SIGSEGV as well.
>

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/

\
 
 \ /
  Last update: 2005-03-22 12:31    [W:0.279 / U:0.020 seconds]
©2003-2008 Jasper Spaans