[PATCH] added locks around mutex and cond initialization

Thomas Pfaff tpfaff@gmx.net
Thu Aug 15 13:00:00 GMT 2002


The actual cond and mutex initialization have a race condition when 2
threads initializes simultanous a mutex initialized with
PTHREAD_MUTEX_INITIALIZE or a cond with PTHREAD_COND_INITIALIZER.

I have added critical sections around mutex and cond creation to fix it.

2002-08-15  Thomas Pfaff  <tpfaff@gmx.net>

	* thread.cc (MTinterface::Init): Initialize critical sections.
	(MTinterface::fixup_after_fork): Ditto after fork.
	(pthread_cond::TimedWait): mutex unlock calls changed.
	(pthread_mutex::Lock): Return 0 on success.
	(__pthread_cond_init): Added critical section around cond
	creation.
	(__pthread_cond_broadcast): Modified check for initialization.
	(__pthread_cond_signal): Ditto.
	(__pthread_cond_dowait); Ditto.
	(__pthread_mutex_init): Added critical section around mutex
	creation.
	(__pthread_mutex_getprioceiling): Modified check for
	initialization.
	(__pthread_mutex_lock): Ditto.
	(__pthread_mutex_trylock): Ditto.
	(__pthread_mutex_unlock): Ditto.
	(__pthread_mutex_setprioceiling): Ditto.
	* thread.h (MUTEX_AUTOINIT_AND_CHECK): New define.
	(COND_AUTOINIT_AND_CHECK): Ditto.
	(MTinterface::mutex_lock): New member.
	(MTinterface::cond_lock): Ditto.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pthread_locks.patch
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20020815/20ce4a36/attachment.ksh>


More information about the Cygwin-patches mailing list