[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