perl's use or non-use of pthread

Bruce Dubbs bruce.dubbs at gmail.com
Fri Mar 20 14:41:49 PDT 2009


Archaic wrote:
> To use -Dusethreads or not, that is the question. :)
> 
> Without, I get 2 files that are linked to pthread:
> 
> /usr/lib/perl5/5.10.0/i686-linux/auto/DB_File/DB_File.so
> /usr/lib/perl5/5.10.0/i686-linux/auto/Time/HiRes/HiRes.so
> 
> With, I get:
> 
> /usr/bin/perl5.10.0
> /usr/bin/perl  (hardlink to perl5.10.0)
> /usr/bin/a2p
> /usr/lib/perl5/5.10.0/i686-linux-thread-multi/auto/DB_File/DB_File.so
> /usr/lib/perl5/5.10.0/i686-linux-thread-multi/auto/Time/HiRes/HiRes.so
> /usr/lib/perl5/5.10.0/i686-linux-thread-multi/auto/threads/threads.so
> /usr/lib/perl5/5.10.0/i686-linux-thread-multi/auto/threads/shared/shared.so
> 
> Notice the 2 in the first list are in the 2nd list, but are installed in
> i686-linux-thread-multi instead of i686-linux. I'm no perl expert, but
> it would seem logical that if perl itself didn't support threading, then
> a module supporting it would be meaningless. This may have implications
> on reentrancy. I currently have access only to Arch Linux and FreeBSD,
> and the main perl binary in those links to libpthread. I'm curious what
> debian-based and redhat-based distros are doing.

On a ubuntu system is:

$ ldd `which perl`
linux-gate.so.1 =>  (0xffffe000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f3d000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7f16000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7efe000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7dbd000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7d8f000)
/lib/ld-linux.so.2 (0xb7f4f000)

On RHEL:

$ ldd `which perl`
libperl.so => /usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE/libperl.so 
(0x0094b000)
libresolv.so.2 => /lib/libresolv.so.2 (0x0091f000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00ad7000)
libdl.so.2 => /lib/libdl.so.2 (0x0089b000)
libm.so.6 => /lib/tls/libm.so.6 (0x008a1000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x008ec000)
libutil.so.1 => /lib/libutil.so.1 (0x00b6b000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x008d8000)
libc.so.6 => /lib/tls/libc.so.6 (0x0076a000)
/lib/ld-linux.so.2 (0x00750000)

So I'd say that -Dusethreads should normally be used.

   -- Bruce



More information about the lfs-dev mailing list