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

Konstantin Belousov kostikbel at gmail.com
Sat Jun 25 15:20:17 UTC 2016


On Sat, Jun 25, 2016 at 05:55:03PM +0300, Ivan Klymenko wrote:
> On Sat, 25 Jun 2016 17:29:15 +0300
> Konstantin Belousov <kostikbel at gmail.com> wrote:
> 
> > On Sat, Jun 25, 2016 at 05:18:00PM +0300, Ivan Klymenko wrote:
> > > On Sat, 25 Jun 2016 17:05:29 +0300
> > > Konstantin Belousov <kostikbel at gmail.com> wrote:
> > >   
> > > > On Sat, Jun 25, 2016 at 05:04:06PM +0300, Ivan Klymenko wrote:  
> > > > > On Sat, 25 Jun 2016 16:55:09 +0300
> > > > > Konstantin Belousov <kostikbel at gmail.com> wrote:
> > > > >     
> > > > > > On Sat, Jun 25, 2016 at 04:44:03PM +0300, Ivan Klymenko
> > > > > > wrote:    
> > > > > > > On Sat, 25 Jun 2016 11:30:40 +0000 (UTC)
> > > > > > > Konstantin Belousov <kib at FreeBSD.org> wrote:
> > > > > > >       
> > > > > > > > Author: kib
> > > > > > > > Date: Sat Jun 25 11:30:40 2016
> > > > > > > > New Revision: 302194
> > > > > > > > URL: https://svnweb.freebsd.org/changeset/base/302194
> > > > > > > > 
> > > > > > > > Log:
> > > > > > > >   For pthread_mutex_trylock() call on owned error-check or
> > > > > > > > non-portable adaptive mutex, return EDEADLK as required by
> > > > > > > > POSIX.  The pthread_mutex_lock() is already compliant.
> > > > > > > >   
> > > > > > > >   Tested by:	Guy Yur <guyyur at gmail.com>
> > > > > > > >   Sponsored by:	The FreeBSD Foundation
> > > > > > > >   MFC after:	2 weeks
> > > > > > > >   Approved by:	re (gjb)
> > > > > > > > 
> > > > > > > > Modified:
> > > > > > > >   head/lib/libthr/thread/thr_mutex.c
> > > > > > > > 
> > > > > > > > Modified: head/lib/libthr/thread/thr_mutex.c
> > > > > > > > ==============================================================================
> > > > > > > > --- head/lib/libthr/thread/thr_mutex.c	Sat Jun 25
> > > > > > > > 10:08:04 2016	(r302193) +++
> > > > > > > > head/lib/libthr/thread/thr_mutex.c Sat Jun 25 11:30:40
> > > > > > > > 2016	(r302194) @@ -850,9 +850,12 @@
> > > > > > > > mutex_self_trylock(struct pthread_mutex switch
> > > > > > > > (PMUTEX_TYPE(m->m_flags)) { case PTHREAD_MUTEX_ERRORCHECK:
> > > > > > > > -	case PTHREAD_MUTEX_NORMAL:
> > > > > > > >  	case PTHREAD_MUTEX_ADAPTIVE_NP:
> > > > > > > > -		ret = EBUSY; 
> > > > > > > > +		ret = EDEADLK;
> > > > > > > > +		break;
> > > > > > > > +
> > > > > > > > +	case PTHREAD_MUTEX_NORMAL:
> > > > > > > > +		ret = EBUSY;
> > > > > > > >  		break;
> > > > > > > >  
> > > > > > > >  	case PTHREAD_MUTEX_RECURSIVE:      
> > > > > > > 
> > > > > > > Update for r302191 to r302196 console-kit-daemon:
> > > > > > > pid 1496 (console-kit-daemon), uid 0: exited on signal 6
> > > > > > > pid 1581 (console-kit-daemon), uid 0: exited on signal 6
> > > > > > > pid 5954 (console-kit-daemon), uid 0: exited on signal 6
> > > > > > > pid 6010 (console-kit-daemon), uid 0: exited on signal 6
> > > > > > > pid 6016 (console-kit-daemon), uid 0: exited on signal 6
> > > > > > > 
> > > > > > > Xorg session after authorization not started - black
> > > > > > > screen.      
> > > > > > 
> > > > > > Why did you replied to r302194 with this information ?  Does
> > > > > > reverting r302194 (and only this revision) restores
> > > > > > console-kit functionality ?    
> > > > > 
> > > > > I do not know which one commits it breaks r302194 or next
> > > > > 302195. I returned to r302191 for restores console-kit
> > > > > functionality.    
> > > > Can you test, please ?  Use r302195 kernel and previous libthr.  
> > > 
> > > Kernel r302195, world r302191 - works fine - the problem can not
> > > reproduce.  
> > 
> > Thank you.
> > 
> > Could you get backtrace from the console-kit-daemon ?  Only rebuild
> > libthr: cd src/lib/libthr && make DEBUG_FLAGS=-g WITHOUT_TESTS=yes
> > all install then gather coredump and load it in gdb.  Then you can
> > revert the commit and rebuild working libthr.
> > 
> 
> http://pastebin.com/wgmmicC3 If this information will be useful.

Yes, it is useful, thank you.  Please try this instead of reverting.

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;


More information about the svn-src-all mailing list