Re: Early adopters of symbol based dependencies needed
Stephen Gran <firstname.lastname@example.org> writes:
> This one time, at band camp, Russ Allbery said:
>> Oh, right, that's the problem. /usr/bin/perl doesn't use libperl
>> itself and instead just exports the same symbols to any modules it
>> loads. So if the module is linked with libperl, when the module is
>> loaded by the Perl interpretor, it loads libperl into the same
>> namespace, the Perl interpretor and libperl both define the same
>> symbols, and the world explodes.
> As I understand it, this is only the case on i386 - on other arches,
> /usr/bin/perl links to libperl, although the modules don't.
...indeed. That's bizarre. Why is i386 different than all the other
If /usr/bin/perl linked with libperl on every platform, we should be able
to safely change modules to link with libperl without creating any
problems. But right now, that change would probably break things on i386
in obscure and bizarre ways.
(One of the standard nasty problems with multiple copies of the same
symbols is that different versions of a function get called at different
times and, when they use any static data, that static data is different
between the different instances. It creates incredibly weird problems
that are horrible to debug.)
Russ Allbery (email@example.com) <http://www.eyrie.org/~eagle/>