Date: Sun, 19 Dec 1999 23:37:13 +0100 From: Poul-Henning Kamp <phk@critter.freebsd.dk> To: Garrett Wollman <wollman@khavrinen.lcs.mit.edu> Cc: freebsd-bugs@FreeBSD.ORG Subject: Re: kern/15554: malloc fails in OMAGIC programs Message-ID: <7706.945643033@critter.freebsd.dk> In-Reply-To: Your message of "Sun, 19 Dec 1999 15:22:04 EST." <199912192022.PAA65483@khavrinen.lcs.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <199912192022.PAA65483@khavrinen.lcs.mit.edu>, Garrett Wollman write s: ><<On Sun, 19 Dec 1999 04:50:02 -0800 (PST), Poul-Henning Kamp <phk@critter.freebsd.dk> said: > >> I thought programs started out at 0x0 or at least close to zero ? > >Not ELF programs. I know, but I thought we tried to keep the start low still. Anyway, the problem is obviously sbrk(2)/brk(2) failing: syv# cat a.c #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <fcntl.h> int main (int argc, char **argv) { char *p = malloc (8192); char buf[4096]; int fd, i; fd = open("/proc/curproc/map", O_RDONLY); if (fd >= 0) { do { i = read(fd, buf, sizeof buf); if (i > 0) write(1, buf, i); } while (i > 0); close(fd); } if (!p) { char badmalloc[] = "malloc failed\n"; write (2, badmalloc, sizeof (badmalloc)); write (2, strerror (errno), strlen (strerror (errno))); write (2, "\n", 1); exit (1); } exit (0); } syv# cc -static -N -o a a.c syv# ktrace ./a 0x8048000 0x804a000 2 0 0xcdc0f180 rwx 1 0 0x0 COW NC vnode 0x804a000 0x804b000 1 0 0xc0279fe0 rwx 1 0 0x2180 NCOW NNC default 0x20000000 0x20001000 1 0 0xcdc324e0 rwx 1 0 0x2180 NCOW NNC default 0xbfbe0000 0xbfc00000 2 0 0xcdc60de0 rwx 1 0 0x2180 NCOW NNC default malloc failed Cannot allocate memory syv# kdump 3101 ktrace RET ktrace 0 3101 ktrace CALL execve(0xbfbffd6f,0xbfbffcb0,0xbfbffcb8) 3101 ktrace NAMI "./a" 3101 a RET execve 0 3101 a CALL readlink(0x804a7d4,0xbfbfeba4,0x3f) 3101 a NAMI "/etc/malloc.conf" 3101 a RET readlink -1 errno 2 No such file or directory 3101 a CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0) 3101 a RET mmap 536870912/0x20000000 3101 a CALL break(0x804c000) 3101 a RET break -1 errno 12 Cannot allocate memory 3101 a CALL break(0x804d000) 3101 a RET break -1 errno 12 Cannot allocate memory 3101 a CALL open(0x8049d01,0,0) 3101 a NAMI "/proc/curproc/map" 3101 a RET open 3 3101 a CALL read(0x3,0xbfbfec60,0x1000) 3101 a GIO fd 3 read 265 bytes "0x8048000 0x804a000 2 0 0xcdc0f180 rwx 1 0 0x0 COW NC vnode 0x804a000 0x804b000 1 0 0xc0279fe0 rwx 1 0 0x2180 NCOW NNC default 0x20000000 0x20001000 1 0 0xcdc324e0 rwx 1 0 0x2180 NCOW NNC default 0xbfbe0000 0xbfc00000 2 0 0xcdc60de0 rwx 1 0 0x2180 NCOW NNC default " 3101 a RET read 265/0x109 3101 a CALL write(0x1,0xbfbfec60,0x109) 3101 a GIO fd 1 wrote 265 bytes "0x8048000 0x804a000 2 0 0xcdc0f180 rwx 1 0 0x0 COW NC vnode 0x804a000 0x804b000 1 0 0xc0279fe0 rwx 1 0 0x2180 NCOW NNC default 0x20000000 0x20001000 1 0 0xcdc324e0 rwx 1 0 0x2180 NCOW NNC default 0xbfbe0000 0xbfc00000 2 0 0xcdc60de0 rwx 1 0 0x2180 NCOW NNC default " 3101 a RET write 265/0x109 3101 a CALL read(0x3,0xbfbfec60,0x1000) 3101 a GIO fd 3 read 0 bytes "" 3101 a RET read 0 3101 a CALL close(0x3) 3101 a RET close 0 3101 a CALL write(0x2,0xbfbfec48,0xf) 3101 a GIO fd 2 wrote 15 bytes "malloc failed \0" 3101 a RET write 15/0xf 3101 a CALL write(0x2,0x804a680,0x16) 3101 a GIO fd 2 wrote 22 bytes "Cannot allocate memory" 3101 a RET write 22/0x16 3101 a CALL write(0x2,0x8049d22,0x1) 3101 a GIO fd 2 wrote 1 byte " " 3101 a RET write 1 3101 a CALL exit(0x1) -- Poul-Henning Kamp FreeBSD coreteam member phk@FreeBSD.ORG "Real hackers run -current on their laptop." FreeBSD -- It will take a long time before progress goes too far! To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7706.945643033>