[Python-bugs-list] [ python-Bugs-433625 ] bug in PyThread_release_lock()

noreply@sourceforge.net noreply@sourceforge.net
Sun, 17 Jun 2001 15:01:20 -0700


Bugs item #433625, was updated on 2001-06-15 19:17
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=433625&group_id=5470

Category: Threads
Group: Platform-specific
>Status: Open
Resolution: Invalid
Priority: 5
Submitted By: Shih-Hao Liu (shihao)
>Assigned to: Tim Peters (tim_one)
Summary: bug in PyThread_release_lock()

Initial Comment:
Mutex should be hold when calling
pthread_cond_signal().  This function should look like:


PyThread_release_lock(PyThread_type_lock lock)
{
        pthread_lock *thelock = (pthread_lock *)lock;
        int status, error = 0;

        dprintf(("PyThread_release_lock(%p) called\n",
lock));

        status = pthread_mutex_lock( &thelock->mut );
        CHECK_STATUS("pthread_mutex_lock[3]");

        thelock->locked = 0;
        /* ***** call pthread_cond_signal before unlock
mutex */
        status = pthread_cond_signal(
&thelock->lock_released );
        CHECK_STATUS("pthread_cond_signal");

        status = pthread_mutex_unlock( &thelock->mut );
        CHECK_STATUS("pthread_mutex_unlock[3]");

        /* wake up someone (anyone, if any) waiting on
the lock */
}


----------------------------------------------------------------------

>Comment By: Tim Peters (tim_one)
Date: 2001-06-17 15:01

Message:
Logged In: YES 
user_id=31435

Ack, did I delete this?!  I sure didn't intend to -- didn't 
even intend to close it.  Reopened pending more info.

----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2001-06-17 14:51

Message:
Logged In: YES 
user_id=6380

Set status to closed -- no need to delete it.

----------------------------------------------------------------------

Comment By: Tim Peters (tim_one)
Date: 2001-06-17 14:16

Message:
Logged In: YES 
user_id=31435

Why?  It's allowed to signal the condition whether or not 
the mutex is held.  Since changing this can have visible 
effects on thread scheduling, I'm reluctant to change it 
without a good reason.


----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=433625&group_id=5470