Hello Carl,

On Mon, Aug 31, 2026 at 12:23:35PM -0700, Carl Wuebker wrote:
> Package: linux-libc-dev
> Version: 6.12.107-1
> Severity: normal
> Dear Maintainer,
> 
>   The problem is that sbrk(2) checks each new request against the machine's
> total RAM + swap space.  It should check each new request against total RAM
> + swap space - memory that has already been allocated to the current
> process.
> 
> Steps to reproduce:
> 1. Compile & run the program below on a machine with 32 GiB memory & 24 GiB
> swap
> 
> --- eatmem_bad.c
> #include <stdio.h>
> #include <unistd.h>
> 
> intptr_t bigMem = (intptr_t) 128LL*1024*1024*1024;
> 
> int main(int argc,char *argv[]) {
>     intptr_t i;
>     unsigned long long mem;
> 
>     if (argc != 1)
>         { (void) fprintf(stderr,"Usage: %s\n", argv[0]); return 2; }
> 
>     mem=0;
>     for (i = bigMem; i >= 16; i /= 2)
>         if (sbrk(i) != (void *) -1)
>             mem |= i;
> 
>     (void) printf("Memory=%llu MiB\n",mem / (1024*1024));
> 
>     return 0;
>     }
> ---
> 
> Expected (and correct) result:
> Memory=56718 MiB
> 
> Actual result:
> Memory=65535 MiB

I wonder what your actual problem is.

It's quite usual that a process can get more memory assigned than there
is physically available. That's called "overcommitting" if you want to
research about that.

Unless there is a real problem to solve I suggest to either ignore it or
discuss with upstream what to do.

Best regards
Uwe

Attachment: signature.asc
Description: PGP signature

Reply via email to