OpenCSW Bug Tracker


Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0003879 [pigz] regular use major sometimes 2009-09-04 12:52 2009-09-08 08:23
Reporter james View Status public  
Assigned To dam
Priority normal Resolution fixed  
Status closed  
Summary 0003879: fails to multithread on Solaris 8
Description pigs (spelt pigz) fails to multithread on Solaris 8.

Workaround: use /usr/lib/lwp.

Suggest changing RPATH to use /usr/lib/lwp
LD_OPTIONS=-R/usr/lib/lwp


It's possible a patch will fix also, please find it, check it's still public and put in checkinstall if you think the patch is the solution.
Additional Information
$ uname -a
SunOS gyor 5.8 Generic_117350-38 sun4u sparc SUNW,Ultra-60
$
$ mkfile 100m /tmp/junk
$ ptime pigz -f /tmp/junk

real 11.143
user 10.529
sys 0.534
$
$ mkfile 100m /tmp/junk
$ ptime pigz -f -p 1 /tmp/junk

real 10.279
user 9.691
sys 0.517
$
$ mkfile 100m /tmp/junk
$ ptime pigz -f -p 2 /tmp/junk

real 11.159
user 10.540
sys 0.535
$
$ mkfile 100m /tmp/junk
$ LD_LIBRARY_PATH=/usr/lib/lwp ptime pigz -f /tmp/junk

real 5.849
user 10.503
sys 0.599
$
$ rm -f /tmp/junk.gz
Tags No tags attached.
Attached Files

- Relationships

-  Notes
(0006658)
dam (administrator)
2009-09-04 13:02

Funny thing, I tested this on Solaris 8, but a branded zone on the T5220 and that looked fine:

build8st% time pigz -9 perl-5.10.0,REV\=2009.06.15-SunOS5.8-sparc-CSW.pkg
pigz -9 perl-5.10.0,REV=2009.06.15-SunOS5.8-sparc-CSW.pkg 275.02s user 0.57s system 2564% cpu 10.746 total

Maybe the branded zones are not 100% compatible in terms of errors :-D

Ok then, putting the runpath in doesn't seem to have a negative effect as on Solaris 9 onwards the libs point back to /usr/lib or are missing completely which would also mean falling back to /usr/lib which works fine right now.
(0006659)
dam (administrator)
2009-09-04 13:06

> pigs (spelt pigz) fails to multithread on Solaris 8.
Hey, Mark Adler will hate you if he finds this site ;-)
(0006660)
james (reporter)
2009-09-04 13:06

I also double checked, no it was quad checked, on build8s. It's probable you have up-to-date patches. Maybe the zone shares the kernel threads... I don't know!
(0006661)
james (reporter)
2009-09-04 13:11

> > pigs (spelt pigz) fails to multithread on Solaris 8.
> Hey, Mark Adler will hate you if he finds this site ;-)
Robots welcome here. It should be pig-zed anyway in English.
(0006665)
dam (administrator)
2009-09-04 14:40
edited on: 2009-09-04 14:44

Neither your suggested solution nor the one officially published from Sun works:
  <http://developers.sun.com/solaris/articles/alt_thread_lib.html> [^]

cd work/build-isa-i386/pigz-2.1.5 && /opt/studio/SOS11/SUNWspro/bin/cc -xO3 -xarch=386 -mt -I/opt/csw/include -c yarn.c
"yarn.c", line 20: warning: macro redefined: _REENTRANT
cd work/build-isa-i386/pigz-2.1.5 && /opt/studio/SOS11/SUNWspro/bin/cc -xO3 -xarch=386 -mt -I/opt/csw/include -c pigz.c
cd work/build-isa-i386/pigz-2.1.5 && /opt/studio/SOS11/SUNWspro/bin/cc -xarch=386 -L/opt/csw/lib -o pigz yarn.o pigz.o -lpthread -lz -R/usr/lib/lwp
gmake[1]: Leaving directory `/home/dam/mgar/pkg/pigz/trunk'
        [build] complete for pigz.

build8x% cd work/build-isa-i386/pigz-2.1.5/
build8x% ldd pigz
        libpthread.so.1 => /usr/lib/libpthread.so.1
        libz.so => /usr/lib/libz.so
        libc.so.1 => /usr/lib/libc.so.1
        libdl.so.1 => /usr/lib/libdl.so.1
        libthread.so.1 => /usr/lib/libthread.so.1

build8x% dump -Lv pigz

pigz:

  **** DYNAMIC SECTION INFORMATION ****
.dynamic:
[INDEX] Tag Value
[1] NEEDED libpthread.so.1
[2] NEEDED libz.so
[3] NEEDED libc.so.1
[4] INIT 0x8059410
[5] FINI 0x805942c
[6] RUNPATH /usr/lib/lwp
[7] RPATH /usr/lib/lwp
[8] HASH 0x8050118
[9] STRTAB 0x8050c40
[10] STRSZ 0x4d6
[11] SYMTAB 0x80504f0
[12] SYMENT 0x10
[13] CHECKSUM 0xbc05
[14] VERNEED 0x8051118
[15] VERNEEDNUM 0x2
[16] PLTSZ 0x270
[17] PLTREL 0x11
[18] JMPREL 0x8051178
[19] REL 0x8051168
[20] RELSZ 0x280
[21] RELENT 0x8
[22] DEBUG 0
[23] FEATURE_1 PARINIT
[24] SUNW_CAP 0x8050108
[25] FLAGS 0
[26] FLAGS_1 0
[27] PLTGOT 0x8069a80

build8x% ldd /usr/lib/libpthread.so
        libthread.so.1 => /usr/lib/libthread.so.1
        libdl.so.1 => /usr/lib/libdl.so.1
        libc.so.1 => /usr/lib/libc.so.1

LD_LIBRARY_PATH works but RUNPATH does not as the lib is pulled in from libpthread.so which does not have this runpath set. Any ideas?

(0006666)
james (reporter)
2009-09-04 15:07

Ah yes, it's the RPATH of libpthread.so that matters.

Use wrapper script with LD_LIBRARY_PATH.
(0006668)
dam (administrator)
2009-09-04 16:47

New version with wrapper script in place in testing/, please try

http://mirror.opencsw.org/testing/pigz-2.1.5,REV=2009.09.04-SunOS5.8-sparc-CSW.pkg.gz [^]
http://mirror.opencsw.org/testing/pigz-2.1.5,REV=2009.09.04-SunOS5.8-i386-CSW.pkg.gz [^]
(0006669)
james (reporter)
2009-09-04 16:58

Proof - pigs can fly!


$ uname -a
SunOS gyor 5.8 Generic_117350-38 sun4u sparc SUNW,Ultra-60
$ mkfile 100m /tmp/junk
$ ptime pigz -f /tmp/junk

real 5.897
user 10.493
sys 0.602


$ uname -a
SunOS bala 5.8 Generic_117351-32 i86pc i386 i86pc
$ mkfile 100m /tmp/junk
$ ptime pigz -f /tmp/junk

real 10.994
user 19.463
sys 1.785
(0006671)
dam (administrator)
2009-09-04 17:08

Released to current/ 2.1.5,REV=2009.09.04


Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker