Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Oct 2007 07:26:37 +0200
From:      Erik Trulsson <ertr1013@student.uu.se>
To:        Jonathan Noack <noackjr@alumni.rice.edu>
Cc:        questions@freebsd.org
Subject:   Re: shooting oneself in the foot with "ldconfig -v"
Message-ID:  <20071011052637.GA2827@owl.midgard.homeip.net>
In-Reply-To: <1526.75.206.130.128.1192076869.squirrel@www.noacks.org>
References:  <64910.70.130.237.37.1192052489.squirrel@www.noacks.org> <20071010223442.GA99741@owl.midgard.homeip.net> <1526.75.206.130.128.1192076869.squirrel@www.noacks.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Oct 11, 2007 at 12:27:49AM -0400, Jonathan Noack wrote:
> On Wed, October 10, 2007 18:34, Erik Trulsson wrote:
> > On Wed, Oct 10, 2007 at 05:41:29PM -0400, Jonathan Noack wrote:
> >> Hey folks,
> >> I'm running 6.2-p8 and was trying to clean up my "portsclean -L" output
> >> today.  It was reporting tons of duplicate libraries in /usr/X11R6 and
> >> /usr/local even though X11R6 is an alias to /usr/local.  I tracked the
> >> problem to portclean's use of `ldconfig -elf -r` which was reporting
> >> directories and libraries in /usr/X11R6.  I read the ldconfig manpage in
> >> an attempt to understand more and saw this line:
> >>      -v      Switch on verbose mode.
> >>
> >> I told myself, "Self, the '-v' option may allow you to determine what's
> >> going on.  It can't help knowing more!"  Alas, the "-v" option doesn't
> >> behave as advertised.  Instead it clears the shared library cache
> >> (reference: http://www.parsed.org/tip/231/).  An empty shared library
> >> cache means all dynamically-linked programs fail.  This has the
> >> wonderful
> >> side-effect of preventing me from logging into the box to fix it (I
> >> logged
> >> off before I figured this out).  "Reboot and all will be well," you say?
> >> Yes, on boot /etc/rc.d/ldconfig is run and it builds the shared library
> >> cache.  Unfortunately, the box is 1,000 miles away in my apartment.  :(
> >>
> >> This brings me to the question:
> >> Is the "-v" option broken or is the documentation out of date?
> >
> > No, the '-v' option behaves as documented and is not broken.
> > It is, however, intended to be used in conjunction with some other option.
> >
> > You see, running ldconfig(8) without any arguments at all will clear the
> > shared library cache.  (Actually it will replace the cache with the files
> > found in the specified directories, but since none were specified...)
> > Adding '-v' will not change what ldconfig does, except possibly letting
> > it be a bit more verbose about what happens.
> 
> Not according to ldconfig(8); running ldconfig without any arguments
> implies "-R":
> -R      Rescan the previously configured directories.  This opens the
>         previous hints file and fetches the directory list from the
>         header.  Any additional pathnames on the command line are also
>         processed.  This is the default action when no parameters are
>         given.

Yes, you are right.

> 
> The previously configured directory list was fully populated, so
> effectively there should have been no change as the previously configured
> directories were untouched and I specified no additional pathnames.
> 
> > ldconfig is behaving as designed and documented, so the bug, such as it
> > is,
> > is in the design of ldconfig that lets you screw up the machine by simply
> > running ldconfig without any option.
> 
> Are you saying that by specifying "-v" I no longer satisfied the "no
> parameters are given" clause and ended up in a default place in the logic?

That wasn't actually what I was saying, but after checking the source code it turns
out you are right and that is exactly what happens.


>  I could see how an unconditional shared library cache clear coupled with
> no additional action (no matching actions to pursue) could get me the
> results I got.  If so that behavior is really confusing.  IMHO a verbose
> switch shouldn't change behavior; it should just spam the console a lot.

True.


-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013@student.uu.se



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