Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Oct 2004 10:40:46 -0500
From:      Brian Fundakowski Feldman <green@freebsd.org>
To:        Scott Long <scottl@freebsd.org>
Cc:        cvs-all@freebsd.org
Subject:   Re: cvs commit: src/lib/libpthread/thread thr_mutex.c
Message-ID:  <20041031154046.GU93831@green.homeunix.org>
In-Reply-To: <4184BD2D.9030209@freebsd.org>
References:  <200410310503.i9V53ofj011896@repoman.freebsd.org> <20041031050620.GQ93831@green.homeunix.org> <4184BD2D.9030209@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Oct 31, 2004 at 03:23:41AM -0700, Scott Long wrote:
> Brian Fundakowski Feldman wrote:
> >On Sun, Oct 31, 2004 at 05:03:50AM +0000, Brian Feldman wrote:
> >
> >>green       2004-10-31 05:03:50 UTC
> >>
> >> FreeBSD src repository
> >>
> >> Modified files:
> >>   lib/libpthread/thread thr_mutex.c 
> >> Log:
> >> Make pthread_mutex_trylock(3) return EBUSY on failure, as all software
> >> packages expect and seems to be most correct according to the slightly-
> >> ambiguous standards.
> >> 
> >> MFC after:              1 month
> >> Corroborated by:        POSIX <http://tinyurl.com/4uvub>;
> >> Reviewed by:            silence on threads@
> >
> >
> >Software such as mozilla projects (using NSPR) and Java have been
> >broken in various ways by this.  We need to try to be more compatible
> >with the most popular interpretation of the standards (instead of just
> >inventing our own) -- usually we're pretty good about this.
> >
> 
> Please define 'broken'?  There are many test suites available for 
> pthreads.  How does this affect those test suites, and have you
> _directly_ talked with those who run the tests suites?

It causes them to _FAIL_.  Try to build a mozilla port without the
FreeBSD-specific pthread_mutex_trylock(3) workaround, with debugging
turned on, and without the removal of EDEADLK from the function.
We break the assertions that software developers use when writing to
the pthreads API, and then when we "port" applications written to
standard POSIX threads implementations in Solaris, Linux, etc., we
have to modify them to catch this.

Have you tried any of the test suites?  The POSIX-provided-for-free
one does not have coverage of error return values from what I can see,
and the Linux pthreads ones also don't test this because as far as they
are concerned, it's a code invariant, and the implementation which they
control is not going to start returning EDEADLK one day.  The FreeBSD
one has similar issues (lack of coverage ones) but additionally is
exceedingly moldy and if it were actually a "regression" test we'd fail
it because half of them do not produce expected results.  What other
ones do you want me to try?

-- 
Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green@FreeBSD.org                               \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\



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