9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: ron minnich <rminnich@lanl.gov>
To: 9fans@cse.psu.edu
Subject: Re: [9fans] acme, rio workalike available in plan 9 ports
Date: Fri, 23 Apr 2004 09:03:53 -0600	[thread overview]
Message-ID: <Pine.LNX.4.44.0404230838480.19442-100000@maxroach.lanl.gov> (raw)
In-Reply-To: <20040422173022.GA28499@lst.de>

On Fri, 23 Apr 2004, Christoph Hellwig wrote:

> That beeing said I'm the last one to defend glibc's bloat, but in a
> system where you can't easily rebuild all binaries for whatever
> reason shared libraries and symbol versioning makes a lot of sense.

No, it doesn't help much at all. 

Let's take program 'a', which depends on stat. In the new order of gcc,
when built, 'a' will depend on stat from glib 2.0. A new stat comes along
with fixes. It gets built into glibc 2.1. You install glibc 2.1. Program
'a', unless I rebuild or replace it, will be using the old stat. Of
course, I might think that the shared library has fixed all binaries using
stat, and I'm wrong -- or am I right? Is the V1 stat just a wrapper? who
knows? And do you cover all the cases? And maybe it isn't calling stat and
I don't know it. Maybe it's calling one of these:

000c888c t __GI___fxstat 
000c90cc t __GI___fxstat64 
000c90cc t ___fxstat64
000c888c T __fxstat 
000c90cc T __fxstat64@@GLIBC_2.2 
000c90cc T__fxstat64@GLIBC_2.1 
000c90cc t __old__fxstat64 
000c888c t _fxstat 

I've found programs that call all these variants, because the functions
they call call different library functions. It's quite interesting to see.  
Which one is 'a' calling? Oh yeah, you can max out the ld.so debug
options, because of course weak symbols come into this game too, and
you're not really sure unless you watch this:

     19595:     binding file /lib/libpthread.so.0 to /lib/libc.so.6: 
normal symbol `getrlimit' [GLIBC_2.2]
     19595:     symbol=__getpagesize;  lookup in file=date
     19595:     symbol=__getpagesize;  lookup in file=/lib/libpthread.so.0
     19595:     symbol=__getpagesize;  lookup in file=/lib/librt.so.1
     19595:     symbol=__getpagesize;  lookup in file=/lib/libc.so.6

yup, several hundred lines of this stuff, for 'date'. Of course it's kind
of interesting: Posix threads are used by 'date'. I had no idea that 
printing a date could be so complex. Maybe that's why it's 40k -- bigger 
than some OSes. 

The symbol versioning breaks assumptions users have about how shared 
libaries work -- that they provide a link to one version of a function and 
if you replace the library all the programs get fixed. I've seen this 
problem in practice, for both naive users and very non-naive sysadmins. 

The symbol versioning wires programs to something beyond a library 
version, in a way that is not obvious to most people. To fix a binary that 
uses a library, you have to replace the binary, not just the library, or 
you can not be sure anything gets fixed. 

That said, if you can't rebuild all the binaries, well then you're stuck, 
and have no idea if your new shared library is going to fix anything at 
all for some of those binaries. Some will stay broken, since replacing the 
library did not necessarily replace broken functions -- the new library 
has them too, for backwards compatibility. So the upgrade is not an 
upgrade.  This is a feature? 

ron





  parent reply	other threads:[~2004-04-23 15:03 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-20 23:04 boyd, rounin
2004-04-20 23:18 ` matt
2004-04-20 23:26   ` Geoff Collyer
2004-04-20 23:28     ` boyd, rounin
2004-04-20 23:48     ` matt
2004-04-20 23:59       ` Charles Forsyth
2004-04-21  3:18         ` Bruce Ellis
2004-04-21  8:51           ` matt
2004-04-21  9:24           ` Charles Forsyth
2004-04-21  9:49           ` C H Forsyth
2004-04-21 12:14           ` boyd, rounin
2004-04-21  0:07     ` Russ Cox
2004-04-21  0:18 ` ron minnich
2004-04-21  0:19   ` boyd, rounin
2004-04-21  2:09     ` ron minnich
2004-04-21  2:20       ` boyd, rounin
2004-04-21  3:43         ` Ronald G. Minnich
2004-04-23  8:55   ` Christoph Hellwig
2004-04-23  8:59     ` boyd, rounin
2004-04-23 15:03     ` ron minnich [this message]
2004-04-23 15:29       ` Christoph Hellwig
2004-04-23 15:54         ` ron minnich
2004-04-23 16:20           ` Joel Salomon
2004-04-23 17:03             ` ron minnich
2004-04-23 16:47           ` Christoph Hellwig
2004-04-23 17:04             ` ron minnich
2004-04-23 17:52               ` Christoph Hellwig
2004-04-21  0:40 ` andrey mirtchovski
2004-04-21  3:25   ` Bruce Ellis
  -- strict thread matches above, loose matches on Subject: below --
2004-04-21  0:38 Charles Forsyth
2004-03-21 21:45 Noah Evans
2004-03-21 22:15 ` andrey mirtchovski
2004-03-21 20:43 Andrey S. Kukhar
2004-03-21 15:57 Noah Evans
2004-03-21  5:07 Noah Evans
2004-03-21  5:25 ` Russ Cox
2004-03-21  6:12 ` Scott Schwartz
2004-03-21 14:02   ` Russ Cox
2004-03-21  4:51 Russ Cox
2004-03-21 21:03 ` andrey mirtchovski
2004-03-22 16:30 ` Axel Belinfante
2004-03-23  9:59   ` Bengt Kleberg
2004-03-23 12:23     ` boyd, rounin
2004-03-23 13:17       ` David Presotto
2004-03-23 13:30         ` boyd, rounin
2004-03-23 15:04           ` Fco.J.Ballesteros
2004-03-23 15:39         ` a
2004-03-23 15:09     ` Russ Cox
2004-03-23 15:12       ` Charles Forsyth
2004-03-23 15:29         ` Russ Cox
2004-03-23 15:13       ` Charles Forsyth
2004-03-23 15:39       ` Axel Belinfante
2004-03-23 15:49         ` a
2004-03-23 16:23           ` Russ Cox
2004-03-23 16:27             ` Axel Belinfante
2004-03-23 16:54             ` a
2004-04-01 10:50             ` Bengt Kleberg
2004-04-01 13:24               ` Russ Cox
2004-04-01 13:54                 ` Scott Schwartz
2004-04-01 14:33                   ` boyd, rounin
2004-04-01 16:14                   ` Russ Cox
2004-04-01 15:25                     ` boyd, rounin
2004-04-02  9:29                 ` Bengt Kleberg
2004-04-02 10:09                   ` Bengt Kleberg
2004-04-02 11:15                     ` Steve Simon
2004-04-02 15:24                       ` boyd, rounin
2004-04-19 10:04                       ` Bengt Kleberg
2004-04-02 11:55                     ` C H Forsyth
2004-04-02 14:30                   ` Russ Cox
2004-04-02 14:53                     ` C H Forsyth
2004-04-19 10:04                     ` Bengt Kleberg
2004-04-19 11:07                       ` Steve Simon
2004-04-20  8:38                         ` Bengt Kleberg
2004-04-20 12:12                           ` boyd, rounin
2004-04-20 12:20                             ` lucio
2004-04-20 12:32                               ` boyd, rounin
2004-04-20 12:58                                 ` lucio
2004-04-20 13:03                                   ` lucio
2004-04-21  9:03                                   ` Bengt Kleberg
2004-04-21  9:17                                     ` Charles Forsyth
2004-04-21  9:02                               ` Bengt Kleberg
2004-04-21  9:02                             ` Bengt Kleberg
2004-04-21  9:28                               ` lucio
2004-04-21 13:53                               ` boyd, rounin
2004-04-19 15:00                       ` Russ Cox
2004-04-19 18:51                         ` boyd, rounin
2004-04-20  8:38                         ` Bengt Kleberg
2004-04-20 12:15                           ` boyd, rounin
2004-04-20 14:56                             ` ron minnich
2004-04-20 17:43                               ` Eli Collins
2004-04-20 15:51                                 ` ron minnich
2004-04-20 17:10                                   ` jmk
2004-04-20 17:34                                     ` Eli Collins
2004-04-20 17:39                                       ` jmk
2004-04-20 19:42                                         ` boyd, rounin
2004-04-20 19:09                                     ` ron minnich
2004-04-20 16:10                                 ` Charles Forsyth
2004-04-20 16:21                                   ` ron minnich
2004-04-20 16:40                                   ` Eli Collins
2004-04-20 19:31                                     ` boyd, rounin
2004-04-20 19:20                                 ` boyd, rounin
2004-03-24 10:42         ` Axel Belinfante

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44.0404230838480.19442-100000@maxroach.lanl.gov \
    --to=rminnich@lanl.gov \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).