Date: Sat, 13 Sep 1997 13:20:01 -0700 (PDT) From: j@uriah.heep.sax.de (J Wunsch) To: freebsd-bugs Subject: Re: bin/4524 Message-ID: <199709132020.NAA25352@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/4524; it has been noted by GNATS. From: j@uriah.heep.sax.de (J Wunsch) To: freebsd-gnats-submit@freebsd.org Cc: Subject: Re: bin/4524 Date: Sat, 13 Sep 1997 22:11:28 +0200 (Bounced off by joerg@freebsd.org, so PR # 4526 can be closed as being a dup for PR # 4524.) This provides more information for bin/4524 Repeatedly calling realloc causes much more memory to be used then you'd expect. For example, when procmail tried reading an 8M message, this was sufficient to run a 64M (128M swap) machine doing nothing else out of swap (and into the ground :-) This code reproduced the problem outside procmail: #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char* argv[]) { size_t size = 0; char *p = NULL; int max = 8404992; if (argc > 2) { fprintf(stderr, "Usage: %s maxmem\n", argv[0]); exit(-1); } if (argc > 1) max = atoi(argv[1]); while(1) { size += 16384; if (size > max) break; fprintf(stderr, "realloc(%u)\n", size); if ((p = realloc(p, size)) == NULL) { fprintf(stderr, "out of memory\n"); exit(-1); } } { int c; printf("done. press return to quit\n"); read(0, &c, 1); } } Recompiling the code with the malloc.c from freebsd-current * $Id: malloc.c,v 1.32 1997/08/31 05:59:39 phk Exp $ fixed things (as did recompiling libc with that malloc.c) Now the program is killed after getting much further than before; (I assume when it hits its resource limits) instead of impacting the machine. This fix was previously reported by jfieber@indiana.edu back in June -- cheers, J"org joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709132020.NAA25352>