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:54:48 -0600	[thread overview]
Message-ID: <Pine.LNX.4.44.0404230943460.19442-100000@maxroach.lanl.gov> (raw)
In-Reply-To: <20040423152948.GA23473@lst.de>

On Fri, 23 Apr 2004, Christoph Hellwig wrote:

> > 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?
> 
> Stop here.  You don't get a new symbol version just because your new
> version ends up in a new glibc.  so unless your fix changes the
> interface to stat it will retain it's old symbol version.  Bumping the
> symbol version is an explicit action of the program author.  And because
> of the maintaince issue they rewrite the old version as a wrapper around
> the new one in every case I've seen so far.  If this wasn't the case
> _and_ the author wouldn't update the version that would be considered a
> huge bug indeed.   But that's not what happens in real life.
> 
> I've looked for an example that shows this without too much code and
> while we're at it shows some glibc braindamage (messing up kernel
> syscalls when translating them to library calls), and that would be the
> sched_getaffinity call, implemented in
> sysdeps/unix/sysv/linux/sched_getaffinity.c.
> 
> We have a routine called __sched_getaffinity_new implementing a small
> wrapper for the sched_getaffinity syscalls.  With
> 
> versioned_symbol (libc, __sched_getaffinity_new, sched_getaffinity,
>                   GLIBC_2_3_4);
> 
> it's exported as sched_getaffinity for the symbol version GLIBC_2_3_4.
> 
> Then
> 
> int
> attribute_compat_text_section
> __sched_getaffinity_old (pid_t pid, cpu_set_t *cpuset)
> {
>   /* The old interface by default assumed a 1024 processor bitmap.  */
>    return __sched_getaffinity_new (pid, 128, cpuset);
> }
> compat_symbol (libc, __sched_getaffinity_old, sched_getaffinity, GLIBC_2_3_3);
> 
> implements the older version ontop of the new one.
> 

Well, here are details I was reluctant to put into email due to my 
sensitive nature. 

But take this one comment: 

>And because of the maintaince issue they rewrite the old version as a
>wrapper around the new one in every case I've seen so far.

I think you're assuming a lot now and into the future. But I'll take your
word for it.

I think unless I'm wrong that you've actually demonstrated the problem I'm
trying to show -- an old binary, using a broken interface, doesn't get
fixed just because you update the library. What happens is that the old
binary retains the broken interface. This is not what people think of with
shared libraries -- they naively think you upgrade the library and good
things happen, bugs are fixed, angels sing. glibc retains old broken
interfaces as time moves forward -- is this really a good idea?

In other words, shared libraries certainly solve a problem, but I'm not
sure any more which one it is.

ron



  reply	other threads:[~2004-04-23 15:54 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
2004-04-23 15:29       ` Christoph Hellwig
2004-04-23 15:54         ` ron minnich [this message]
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.0404230943460.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).