Subject: Re: problem with electric
To: None <pkgsrc-users@netbsd.org>
From: Christian Biere <christianbiere@gmx.de>
List: pkgsrc-users
Date: 12/30/2006 11:51:18
Ulrich Etile wrote:
> Le Thu, 14 Dec 2006 12:09:46 -0600 (CST),
> > > electric: Error detected by libpthread: Unlocking unlocked mutex.
> > > Detected by file
> > > "/home/builds/ab/netbsd-3-1-RELEASE/src/lib/libpthread/pthread_mutex.c",
> > > line 363, function "pthread_mutex_unlock". See pthread(3) for
> > > information. Abort

> /*
>  * Routine that unlocks mutual-exclusion object "vmutex".
>  */
> void emutexunlock(void *vmutex)
> {
> #ifdef HAVE_PTHREAD
> 	pthread_mutex_t *mutex;
> 
> 	mutex = (pthread_mutex_t *)vmutex;
> 	pthread_mutex_unlock(mutex);
> #else
> 	mutex_t *mutexid;
> 
> 	mutexid = (mutex_t *)vmutex;
> 	mutex_unlock(mutexid);
> #endif
> }
> 
> <<<<<
> 
> Apparently, if I remove function pthread_mutex_unlock() : it runs. 
> But I don't think that is good to remove the function
> pthread_unlock_mutex.

The problem is not this function itself but how it's used. I'm no
threadpert but I could think of a hack that is

		pthread_mutex_trylock(mutex));
		pthread_mutex_unlock(mutex);

-- 
Christian