Browse Source

JackPosixProcessSync: Fix mutex owner on TimedWait() timeout.

Per POSIX definition, pthread_cond_timedwait() re-acquires the mutex
when a timeout occurs and ETIMEDOUT is returned. In that case also
mark the waiting thread as owner again, for consistency.
Otherwise subsequent attempts to unlock the mutex will fail, leaving
the mutex locked forever.
develop
Florian Walpen 0EVSG 6 months ago
parent
commit
886b35c3bd
1 changed files with 1 additions and 1 deletions
  1. +1
    -1
      posix/JackPosixProcessSync.cpp

+ 1
- 1
posix/JackPosixProcessSync.cpp View File

@@ -122,7 +122,7 @@ bool JackPosixProcessSync::TimedWait(long usec)
time.tv_nsec = (next_date_usec % 1000000) * 1000;

res = pthread_cond_timedwait(&fCond, &fMutex, &time);
if (res != 0) {
if (res != 0 && res != ETIMEDOUT) {
jack_error("JackPosixProcessSync::TimedWait error usec = %ld err = %s", usec, strerror(res));
} else {
fOwner = pthread_self();


Loading…
Cancel
Save