Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Jun 1998 06:11:53 +0800
From:      Peter Wemm <peter@netplex.com.au>
To:        Terry Lambert <tlambert@primenet.com>
Cc:        joelh@gnu.org, fenner@parc.xerox.com, current@FreeBSD.ORG
Subject:   Re: Bogus errno twiddling by lstat... 
Message-ID:  <199806222211.GAA04080@spinner.netplex.com.au>
In-Reply-To: Your message of "Mon, 22 Jun 1998 17:36:44 GMT." <199806221736.KAA11829@usr06.primenet.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
Terry Lambert wrote:
[..]
> % cat fum.c
> #include <stdio.h>
> #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 <peter@netplex.com.au>   Netplex Consulting



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199806222211.GAA04080>