two 4GB mallocs => SEGV

Willem Jan Withagen wjw at withagen.nl
Tue Oct 26 05:47:11 PDT 2004


Georgi Guninski wrote:

> on a freebsd amd64 box with more than 8GB swap i experience the following:
> 
> amdkotef64# uname -a
> FreeBSD amdkotef64.localdomain 5.3-BETA6 FreeBSD 5.3-BETA6 #0: Sat Sep 25
> 21:49:38 UTC 2004     root at fanboy.samsco.home:/usr/obj/usr/src/sys/GENERIC
> amd64
> amdkotef64#
> 
> amdkotef64# cat test.c
> #include <stdlib.h>
> 
> int main(int ac, char **av)
> {
> char *a, *b;
> size_t siz;
> siz=4L*1024L*1024L*1024L;
> printf("%lx\n",siz);
> a=malloc(siz);
> printf("%lx\n",a);
> b=malloc(siz);
> printf("%lx\n",b);
> }
> amdkotef64# gcc test.c
> amdkotef64# ./a.out 
> 100000000
> 503000

> /: write failed, filesystem is full
> Segmentation fault

These 2 lines stem from the fact that the program is being dumped and there is 
not enough space to dump the full size core of that program.

what does swapinfo tell you during the the run of the program???

I ran malloc tests in 4Gb with 5Gb of swap, which it nicely completely filled, 
and then in faulted, because there was no more space.
This behaviour can be set, I think. Check man 5 malloc.conf, and check 
/etc/malloc.conf to see if you've got the X-flag on.
I have malloc.conf-> aj, and the program terminates in 3 seconds because it 
does not zero the memory.

So pick and choose the behaviour you want.

--WjW

> amdkotef64# df -h
> Filesystem     Size    Used   Avail Capacity  Mounted on
> /dev/ad0s3a    3.8G    3.7G   -236M   107%    /
> devfs          1.0K    1.0K      0B   100%    /dev
> /dev/ad0s3d    4.7G     34K    4.3G     0%    /home
> amdkotef64# du -h a.out.core 
> 2.5G    a.out.core
> amdkotef64# 



More information about the freebsd-amd64 mailing list