Comment 19 for bug 90812

Revision history for this message
In , Steve Langasek (vorlon) wrote : Re: Bug#327585: [Pkg-openldap-devel] Bug#327585: reopening

On Sun, Feb 03, 2008 at 05:47:01PM -0800, Russ Allbery wrote:

> > steve@spartacus:~$ sudo /etc/init.d/slapd start
> > Starting OpenLDAP: slapd - failed:
> > Error Can't load '/usr/lib/perl/5.8/auto/POSIX/POSIX.so' for module POSIX: /usr/lib/perl/5.8/auto/POSIX/POSIX.so: undefined symbol: PL_sig_name at /usr/lib/perl/5.8/XSLoader.pm line 70.
> > at /usr/lib/perl/5.8/POSIX.pm line 26
> > Compilation failed in require at /etc/perl/SampleLDAP.pm line 2.
> > BEGIN failed--compilation aborted at /etc/perl/SampleLDAP.pm line 2.
> > Compilation failed in require at (eval 2) line 1.
> > BEGIN failed--compilation aborted at (eval 2) line 1.

> > Can't call method "config" on an undefined value.

> Okay, thanks.

> I could have sworn that this wasn't happening with 2.3.30 or
> thereabouts... oh, I know what the difference is. I was testing on
> amd64. Right, now I understand.

> This is that problem that's caused by Perl modules not being linked with
> libperl on i386 (but not on any other architecture) and instead
> duplicating the symbols between perl and libperl and leaving them
> undefined in the modules. This works correctly if the modules are linked
> with libperl, which they are on amd64 and Debian's other architectures.

> You're right, this isn't closed; it's just i386-specific.

I was surprised to hear that perl modules were linked to libperl on !i386
(which would be the correct thing to do, I just didn't think the standard
perl build rules handled this). So I checked, and on my amd64 system:

$ ldd /usr/lib/perl/5.8.8/auto/POSIX/POSIX.so
 libm.so.6 => /lib/libm.so.6 (0x00002b02d4451000)
 libc.so.6 => /lib/libc.so.6 (0x00002b02d46d2000)
 /lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
$

So sure enough, I tried the test case from
<https://bugs.launchpad.net/ubuntu/+source/openldap2.3/+bug/90812>, and:

# slapd
Error Can't load '/usr/lib/perl/5.8/auto/POSIX/POSIX.so' for module POSIX: /usr/lib/perl/5.8/auto/POSIX/POSIX.so: undefined symbol: PL_sig_name at /usr/lib/perl/5.8/XSLoader.pm line 70.
 at /usr/lib/perl/5.8/POSIX.pm line 26
Compilation failed in require at /etc/perl/SampleLDAP.pm line 2.
BEGIN failed--compilation aborted at /etc/perl/SampleLDAP.pm line 2.
Compilation failed in require at (eval 2) line 1.
BEGIN failed--compilation aborted at (eval 2) line 1.
#

I have no idea if this is a regression from previous perl builds, but it
looks to me like it's a general problem at this point.

--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
<email address hidden> <email address hidden>