OpenBSD nasu.my.domain 6.2 GENERIC.MP#238 amd64.

The following trivial program:

#include <stdio.h>

int
main(int argc, char *argv[])
{
        printf("Hello, world!\n");
        return 0;
}

Gives the following malloc.out output when run with MALLOC_OPTIONS=D:

******** Start dump testes *******
MT=0 I=1 F=0 U=0 J=1 R=0 X=0 C=0 cache=64 G=0
Malloc dir of testes pool 0 at 0x7b935db0050
Region slots free 511/512
Finds 0/0
Inserts 1/0
Deletes 0/0
Cheap reallocs 0/0
In use 77824
Guarded 0
Free chunk structs:
Free pages cached: 0
slot)  hash d  type               page                  f size [free/n]
  8e) #  8e 0 pages      0x7b9f1391000      0x7b70b611bd7 65536
Leak report
                 f     sum      #    avg
     0x7b70b611bd7   65536      1  65536

******** End dump testes *******

When fclose(stdout) is added before the return, the leak disappears, so I guess libc either doesn't free its own (lazily allocated?) FILE*s, or MALLOC_OPTIONS=D dumps its stats before it is done. Closing stdin/stdout/stderr probably shouldn't be required of a program to be leak-free?

Reply via email to