svn commit: r302194 - head/lib/libthr/thread

Daniel Eischen deischen at freebsd.org
Sat Jun 25 17:03:09 UTC 2016


On Sat, 25 Jun 2016, Konstantin Belousov wrote:

> On Sat, Jun 25, 2016 at 07:03:46PM +0300, Ivan Klymenko wrote:
>> On Sat, 25 Jun 2016 18:20:06 +0300
>> Konstantin Belousov <kostikbel at gmail.com> wrote:
>>> diff --git a/lib/libthr/thread/thr_mutex.c
>>> b/lib/libthr/thread/thr_mutex.c index 2ad05ca..1ae75fb 100644
>>> --- a/lib/libthr/thread/thr_mutex.c
>>> +++ b/lib/libthr/thread/thr_mutex.c
>>> @@ -850,10 +871,10 @@ mutex_self_trylock(struct pthread_mutex *m)
>>>
>>>  	switch (PMUTEX_TYPE(m->m_flags)) {
>>>  	case PTHREAD_MUTEX_ERRORCHECK:
>>> -	case PTHREAD_MUTEX_ADAPTIVE_NP:
>>>  		ret = EDEADLK;
>>>  		break;
>>>
>>> +	case PTHREAD_MUTEX_ADAPTIVE_NP:
>>>  	case PTHREAD_MUTEX_NORMAL:
>>>  		ret = EBUSY;
>>>  		break;
>>
>> Strange, it's not helped http://pastebin.com/jbzP0JW2
>
> Are you sure that the new libthr was installed ?  Compile and run the
> following test, please, and show me the results.  On the patched libthr,
> the program must not output anything and exits with error code 0.

Sorry for not noticing and coming in late, but I think the
original change is wrong.  I don't see in the 2013 POSIX spec
or Solaris 11 man page (haven't checked Linux yet) where
pthread_mutex_trylock() returns EDEADLK under any
circumstance.

   http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutex_trylock.html
   http://docs.oracle.com/cd/E23824_01/html/821-1465/pthread-mutex-trylock-3c.html#scrolltoc

-- 
DE


More information about the svn-src-all mailing list