From owner-freebsd-current Mon Jun 22 15:13:09 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id PAA05402 for freebsd-current-outgoing; Mon, 22 Jun 1998 15:13:09 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from spinner.netplex.com.au (spinner.netplex.com.au [202.12.86.3]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id PAA05311 for ; Mon, 22 Jun 1998 15:12:36 -0700 (PDT) (envelope-from peter@netplex.com.au) Received: from spinner.netplex.com.au (localhost [127.0.0.1]) by spinner.netplex.com.au (8.8.8/8.8.8/Spinner) with ESMTP id GAA04080; Tue, 23 Jun 1998 06:11:53 +0800 (WST) (envelope-from peter@spinner.netplex.com.au) Message-Id: <199806222211.GAA04080@spinner.netplex.com.au> X-Mailer: exmh version 2.0.2 2/24/98 To: Terry Lambert cc: joelh@gnu.org, fenner@parc.xerox.com, current@FreeBSD.ORG Subject: Re: Bogus errno twiddling by lstat... In-reply-to: Your message of "Mon, 22 Jun 1998 17:36:44 GMT." <199806221736.KAA11829@usr06.primenet.com> Date: Tue, 23 Jun 1998 06:11:53 +0800 From: Peter Wemm Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Terry Lambert wrote: [..] > % cat fum.c > #include > #include "errno.h" > > main() > { > int k; > > for(k=0; k < 10; k++) > printf( "default errno is %d\n", errno); > } > % cc -o fum fum.c -lc_r > % ktrace fum > % kdump > 22622 ktrace RET ktrace 0 > 22622 ktrace CALL readlink(0x806b652,0xefbfd38c,0x3f) > 22622 ktrace NAMI "/etc/malloc.conf" > **************************************** > 22622 ktrace RET readlink -1 errno 2 No such file or directory > 22622 ktrace CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0) > 22622 ktrace RET mmap 134328320/0x801b000 > 22622 ktrace CALL break(0x5000) > 22622 ktrace RET break 0 > 22622 ktrace CALL break(0x6000) > 22622 ktrace RET break 0 > ... > 22622 ktrace NAMI "/usr/X11R6/bin/fum" > 22622 ktrace RET execve -1 errno 2 No such file or directory > 22622 ktrace CALL execve(0xefbfd438,0xefbfd8f8,0xefbfd900) > 22622 ktrace NAMI "./fum" > 22622 fum RET execve 0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > 22622 fum CALL open(0x109c,0,0) > 22622 fum NAMI "/usr/libexec/ld.so" > 22622 fum RET open 3 > 22622 fum CALL read(0x3,0xefbfd8a0,0x20) > 22622 fum GIO fd 3 read 32 bytes > "\M-L\0\M^F\M-@\0\M-`\0\0\0 \0\0$\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0 " > 22622 fum RET read 32/0x20 > ... > 22622 fum RET sigprocmask 0 > 22622 fum CALL sigprocmask(0x3,0) > 22622 fum RET sigprocmask -65793/0xfffefeff > 22622 fum CALL readlink(0x8072782,0xefbfd730,0x3f) > 22622 fum NAMI "/etc/malloc.conf" > **************************************** > 22622 fum RET readlink -1 errno 2 No such file or directory > 22622 fum CALL mmap(0,0x1000,0x3,0x1002,0xffffffff,0,0,0) > 22622 fum RET mmap 134324224/0x801a000 > > > > malloc() has been adjusted to preserve errno across the readlink(), so I > > suggest you leave it at that rather than digging youself an even deeper > > hole. :-) > > Thank you for making the change; however, you can clearly see that > the /etc/malloc.conf file is beaing readlink'ed twice. Of course it does when you exec a new executable!! > > Terry Lambert > terry@lambert.org > --- > Any opinions in this posting are my own and not those of my present > or previous employers. > Cheers, -Peter -- Peter Wemm Netplex Consulting To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message