Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Apr 2006 21:13:05 +0200 (CEST)
From:      Joerg Pulz <Joerg.Pulz@frm2.tum.de>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        Daniel Eischen <deischen@freebsd.org>, freebsd-sparc64@freebsd.org, freebsd-threads@freebsd.org
Subject:   Re: pthread_mutex_timedlock on sparc64
Message-ID:  <20060421202128.H52948@hades.admin.frm2>
In-Reply-To: <20060420182331.GA26174@xor.obsecurity.org>
References:  <20060418204240.GA69833@xor.obsecurity.org> <001801c66372$a032e770$2522630a@t22> <20060419054116.GA39394@xor.obsecurity.org> <Pine.GSO.4.64.0604190835400.1870@sea.ntplx.net> <20060420074713.Y52948@hades.admin.frm2> <20060420182331.GA26174@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


On Thu, 20 Apr 2006, Kris Kennaway wrote:

> On Thu, Apr 20, 2006 at 08:01:36AM +0200, Joerg Pulz wrote:
>>
>> On Wed, 19 Apr 2006, Daniel Eischen wrote:
>>
>>> On Wed, 19 Apr 2006, Kris Kennaway wrote:
>>>
>>>> On Wed, Apr 19, 2006 at 03:32:18PM +1000, Sean Winn wrote:
>>>>> Kris Kennaway wrote:
>>>>>> On Tue, Apr 18, 2006 at 07:28:00PM +1000, Sean Winn wrote:
>>>>>>> owner-freebsd-sparc64@freebsd.org wrote:
>>>>>>>>
>>>>>>>> libthr *is* the thread library on sparc64; as Daniel says,
>>>>>>>> libpthread is not ported to sparc64.
>>>>>>>>
>>>>>>>> Kris
>>>>>>>
>>>>>>> Not yet in 6.x
>>>>>>>
>>>>>>> 19:25 Tue 18-Apr sean@bloody [~] uname -msr
>>>>>>> FreeBSD 6.1-RC1 sparc64
>>>>>>> 19:25 Tue 18-Apr sean@bloody [~] ls -l /usr/lib/libpthread.so
>>>>>>> lrwxrwxrwx  1 root  wheel  9 Apr 17 04:05 /usr/lib/libpthread.so ->
>>>>>>> libc_r.so
>>>>>>
>>>>>> Oops, I forgot about that..although so did David when he removed
>>>>>> libc_r from 7.0 and broke sparc :-)
>>>>>>
>>>>>> So I guess this is a libc_r missing feature.  Probably the solution is
>>>>>> to use libthr on 6.x too (I don't know if it works well enough on
>>>>>> 5.x).  libthr causes witness panics under load on sparc64 though.
>>>>>>
>>>>>> Kris
>>>>>
>>>>> Would threading problems be related to sparc64/73413? I've noticed it
>>>>> sitting idle for a long while, and the test case still core dumps. The
>>>>> PR it references (sparc64/72998) also is open.
>>>>
>>>> Huh, turns out libpthread does exist on sparc, it's just called
>>>> libkse.  Anyway, since it's not in use the PR wasn't relevant.
>>>
>>> Yeah, I implemented as much as I could for it, but it doesn't
>>> work.  So it's installed as libkse as a prod for someone to
>>> finish and test it.
>>
>> First, thanks for all your responses.
>> I found an Ultra 10 machine in a dark corner of my office an reactivated
>> it.
>> Installation went fine, the system is not very fast but runs without
>> problems. Unfortunately, it is an IDE system, so disk access is a bit
>> slow.
>> It runs now a RELENG_6_1 and it is correct that the
>> "pthread_mutex_timedlock" symbol is missing in libpthread, which is
>> actually a link to libc_r. The "pthread_mutex_timedlock" is only in libthr
>> and libkse, which is actually libpthread on sparc64 and alpha according to
>> src/lib/libpthread/Makefile.
>>
>> I decided to give libkse a try and started building net/openmcu and all
>> ports it depends on with 'make PTHREAD_LIBS="-lkse"' and so far, compiling
>> and linking was fine. But as soon as i try to execute the resulting
>> binary, it dumps core. Currently i did no further investigation on this.
>
> Yes, as discussed upthread libkse is known not to work.  libthr should
> be fine though (since the port builds on 7.0).
>
> Hopefully David or someone will be able to look at the WITNESS panics
> from libthr on sparc soon.  Then we can make libthr the default on
> FreeBSD 6.x as well.
>
> In the meantime, you might be able to force the port to use libthr on
> 5.x/6.x, but this may not work since you typically encounter problems
> if different thread libraries are mixed in the same binary.  If not,
> the port should probably be marked BROKEN on sparc/5.x and 6.x until
> the change can be made.

Kris,

you're right, forcing the port to use libthr didn't work.
I submitted PR's to mark it BROKEN for sparc64 && OSVERSION <= 700003
as the __FreeBSD_version bump to 700004 was exactly three days after the 
default thread library for sparc64 was changed from libc_r to libthr.

The changes for net/gatekeeper and net/openmcu are in the tree. The 
PR/96137 for net/openam is pending.

Thanks for all your help.
Joerg

- -- 
The beginning is the most important part of the work.
 				-Plato
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (FreeBSD)

iD8DBQFESS7DSPOsGF+KA+MRAt5+AJ91hNZ1duFYmjDe3aLABE2JuE6f9ACdHOHc
jKzltWxtLNdMXkEp0Ck1n4Y=
=hnK1
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060421202128.H52948>