Hi, it seems the pointer variable self->locked should be guarded by the lock self->mtx.
However, it seems the self->locked is not protected at Line 489 due to the early lock releases at Line 488.
|
PaError PaUnixThread_NotifyParent( PaUnixThread* self ) |
|
{ |
|
PaError result = paNoError; |
|
PA_UNLESS( self->parentWaiting, paInternalError ); |
|
|
|
if( !self->locked ) |
|
{ |
|
PA_ENSURE( PaUnixMutex_Lock( &self->mtx ) ); |
|
self->locked = 1; |
|
} |
|
self->parentWaiting = 0; |
|
pthread_cond_signal( &self->cond ); |
|
PA_ENSURE( PaUnixMutex_Unlock( &self->mtx ) ); |
|
self->locked = 0; |
|
|
|
error: |
|
return result; |
|
} |
Hi, it seems the pointer variable
self->lockedshould be guarded by the lockself->mtx.However, it seems the
self->lockedis not protected at Line 489 due to the early lock releases at Line 488.julius/msvc/Library_PortAudio/src/src/os/unix/pa_unix_util.c
Lines 476 to 493 in 4182bf0