From: Bart Van Assche Date: Sat, 14 Mar 2009 09:07:28 +0000 (+0000) Subject: Merged trunk revisions 9398, 9399, 9400 and 9407 to the 3.4 branch. Fixes bug #187048. X-Git-Tag: svn/VALGRIND_3_4_1~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=80525002319ee334d8eef4ef2aa9a0c10bd4ee27;p=thirdparty%2Fvalgrind.git Merged trunk revisions 9398, 9399, 9400 and 9407 to the 3.4 branch. Fixes bug #187048. git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_4_BRANCH@9408 --- diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c index 100dc5b813..9f5c3a8485 100644 --- a/drd/drd_pthread_intercepts.c +++ b/drd/drd_pthread_intercepts.c @@ -132,15 +132,18 @@ static MutexT pthread_to_drd_mutex_type(const int kind) /** @note The function mutex_type() has been declared inline in order * to avoid that it shows up in call stacks. + * @note glibc stores the mutex type in the lowest two bits, and uses the + * higher bits for flags like PTHREAD_MUTEXATTR_FLAG_ROBUST and + * PTHREAD_MUTEXATTR_FLAG_PSHARED. */ static __inline__ MutexT mutex_type(pthread_mutex_t* mutex) { #if defined(HAVE_PTHREAD_MUTEX_T__M_KIND) /* LinuxThreads. */ - const int kind = mutex->__m_kind; + const int kind = mutex->__m_kind & 3; #elif defined(HAVE_PTHREAD_MUTEX_T__DATA__KIND) /* NPTL. */ - const int kind = mutex->__data.__kind; + const int kind = mutex->__data.__kind & 3; #else /* Another POSIX threads implementation. Regression tests will fail. */ const int kind = PTHREAD_MUTEX_DEFAULT; diff --git a/drd/tests/Makefile.am b/drd/tests/Makefile.am index 36edbcb548..dde4d52ddd 100644 --- a/drd/tests/Makefile.am +++ b/drd/tests/Makefile.am @@ -109,6 +109,8 @@ EXTRA_DIST = \ pth_detached_sem.vgtest \ pth_inconsistent_cond_wait.stderr.exp \ pth_inconsistent_cond_wait.vgtest \ + pth_process_shared_mutex.vgtest \ + pth_process_shared_mutex.c \ pth_spinlock.stderr.exp \ pth_spinlock.vgtest \ qt4_mutex.stderr.exp \ @@ -228,6 +230,7 @@ check_PROGRAMS = \ pth_create_chain \ pth_detached \ pth_detached_sem \ + pth_process_shared_mutex \ pth_inconsistent_cond_wait \ pth_spinlock \ recursive_mutex \ @@ -354,6 +357,9 @@ pth_detached_sem_LDADD = -lpthread pth_inconsistent_cond_wait_SOURCES = pth_inconsistent_cond_wait.c pth_inconsistent_cond_wait_LDADD = -lpthread +pth_process_shared_mutex_SOURCES = pth_process_shared_mutex.c +pth_process_shared_mutex_LDADD = -lpthread + pth_spinlock_SOURCES = pth_spinlock.c pth_spinlock_LDADD = -lpthread diff --git a/drd/tests/pth_process_shared_mutex.c b/drd/tests/pth_process_shared_mutex.c new file mode 100644 index 0000000000..1344761f44 --- /dev/null +++ b/drd/tests/pth_process_shared_mutex.c @@ -0,0 +1,30 @@ +/* + * Test program that locks and unlocks a process-shared mutex. + * See also https://bugs.kde.org/show_bug.cgi?id=187048. + */ + + +#define _GNU_SOURCE + +#include +#include + + +int main() +{ + pthread_mutex_t mutex; + pthread_mutexattr_t attr; + + pthread_mutexattr_init(&attr); + pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); + pthread_mutex_init(&mutex, &attr); + pthread_mutexattr_destroy(&attr); + + pthread_mutex_lock(&mutex); + pthread_mutex_unlock(&mutex); + pthread_mutex_destroy(&mutex); + + fprintf(stderr, "Finished.\n"); + + return 0; +} diff --git a/drd/tests/pth_process_shared_mutex.stderr.exp b/drd/tests/pth_process_shared_mutex.stderr.exp new file mode 100644 index 0000000000..a7089bb434 --- /dev/null +++ b/drd/tests/pth_process_shared_mutex.stderr.exp @@ -0,0 +1,4 @@ + +Finished. + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) diff --git a/drd/tests/pth_process_shared_mutex.vgtest b/drd/tests/pth_process_shared_mutex.vgtest new file mode 100644 index 0000000000..df9916867f --- /dev/null +++ b/drd/tests/pth_process_shared_mutex.vgtest @@ -0,0 +1,3 @@ +prereq: ./supported_libpthread +prog: pth_process_shared_mutex +vgopts: --var-info=yes --check-stack-var=yes diff --git a/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5 b/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5 index 1e531a84c8..a800bc3b5f 100644 --- a/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5 +++ b/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5 @@ -25,28 +25,7 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_destroy (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:102) -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:116) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_timedlock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:121) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. +Mutex not locked: mutex 0x........, recursion count 0, owner 0. at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:125) mutex 0x........ was first observed at: @@ -140,4 +119,4 @@ Destroying locked rwlock: rwlock 0x......... Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: main (tc20_verifywrap.c:262) -ERROR SUMMARY: 16 errors from 16 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 13 errors from 13 contexts (suppressed: 0 from 0) diff --git a/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc b/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc index 93e3d8a55c..1a0e33155e 100644 --- a/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc +++ b/drd/tests/tc20_verifywrap.stderr.exp-glibc2.5-ppc @@ -25,28 +25,7 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_destroy (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:102) -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:116) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_timedlock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:121) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. +Mutex not locked: mutex 0x........, recursion count 0, owner 0. at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:125) mutex 0x........ was first observed at: @@ -140,4 +119,4 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. Destroying locked rwlock: rwlock 0x......... at 0x........: main (tc20_verifywrap.c:262) -ERROR SUMMARY: 16 errors from 16 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 13 errors from 13 contexts (suppressed: 0 from 0) diff --git a/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8 b/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8 index d4e7175e5e..057b5fe403 100644 --- a/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8 +++ b/drd/tests/tc20_verifywrap.stderr.exp-glibc2.8 @@ -25,28 +25,7 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_destroy (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:102) -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:116) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_timedlock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:121) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) - -The object at address 0x........ is not a mutex. +Mutex not locked: mutex 0x........, recursion count 0, owner 0. at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:125) mutex 0x........ was first observed at: diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 index 9e29a244e5..31447acbf9 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 @@ -163,7 +163,7 @@ Destroying locked rwlock: rwlock 0x......... Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: main (tc20_verifywrap.c:262) -[1/1] mutex_destroy invalid mutex 0x........ rc 0 owner 0 +[1/1] mutex_destroy mutex 0x........ rc 0 owner 0 [1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 0 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0 [1/1] mutex_unlock recursive mutex 0x........ rc 1 diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b index 4be55c3794..7fb1fe8e1d 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b @@ -163,7 +163,7 @@ Destroying locked rwlock: rwlock 0x......... Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: main (tc20_verifywrap.c:262) -[1/1] mutex_destroy invalid mutex 0x........ rc 0 owner 0 +[1/1] mutex_destroy mutex 0x........ rc 0 owner 0 [1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 0 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0 [1/1] mutex_unlock recursive mutex 0x........ rc 1 diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 index 9b729075ea..aff9624e44 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 @@ -29,36 +29,15 @@ The object at address 0x........ is not a mutex. Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_destroy (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:102) -[1/1] mutex_trylock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] pre_mutex_lock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:116) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] mutex_trylock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_timedlock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:121) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] mutex_unlock invalid mutex 0x........ rc 0 +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] mutex_unlock mutex 0x........ rc 0 -The object at address 0x........ is not a mutex. +Mutex not locked: mutex 0x........, recursion count 0, owner 0. at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:125) mutex 0x........ was first observed at: @@ -169,7 +148,7 @@ Destroying locked rwlock: rwlock 0x......... Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: main (tc20_verifywrap.c:262) -[1/1] mutex_destroy invalid mutex 0x........ rc 0 owner 0 +[1/1] mutex_destroy mutex 0x........ rc 0 owner 0 [1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 0 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0 [1/1] mutex_unlock recursive mutex 0x........ rc 1 @@ -219,4 +198,4 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -ERROR SUMMARY: 16 errors from 16 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 13 errors from 13 contexts (suppressed: 0 from 0) diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc index 0b7f0c14ae..a7360fc1ad 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc @@ -29,36 +29,15 @@ The object at address 0x........ is not a mutex. Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_destroy (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:102) -[1/1] mutex_trylock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] pre_mutex_lock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:116) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] mutex_trylock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_timedlock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:121) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] mutex_unlock invalid mutex 0x........ rc 0 +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] mutex_unlock mutex 0x........ rc 0 -The object at address 0x........ is not a mutex. +Mutex not locked: mutex 0x........, recursion count 0, owner 0. at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:125) mutex 0x........ was first observed at: @@ -162,7 +141,7 @@ FIXME: can't figure out how to verify wrap of sem_post ------------ dealloc of mem holding locks ------------ -[1/1] mutex_destroy invalid mutex 0x........ rc 0 owner 0 +[1/1] mutex_destroy mutex 0x........ rc 0 owner 0 [1/1] mutex_destroy error checking mutex 0x........ rc 1 owner 1 Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. @@ -219,4 +198,4 @@ Destroying locked rwlock: rwlock 0x......... [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -ERROR SUMMARY: 16 errors from 16 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 13 errors from 13 contexts (suppressed: 0 from 0) diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 index 26410b6d4f..939ae4106f 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 @@ -29,36 +29,15 @@ The object at address 0x........ is not a mutex. Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_destroy (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:102) -[1/1] mutex_trylock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] pre_mutex_lock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:116) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] mutex_trylock invalid mutex 0x........ rc 0 owner 0 - -The object at address 0x........ is not a mutex. - at 0x........: pthread_mutex_timedlock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:121) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?) - by 0x........: main (tc20_verifywrap.c:108) -[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0 (locking failed) -[1/1] mutex_unlock invalid mutex 0x........ rc 0 +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 +[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 (locking failed) +[1/1] mutex_unlock mutex 0x........ rc 0 -The object at address 0x........ is not a mutex. +Mutex not locked: mutex 0x........, recursion count 0, owner 0. at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:125) mutex 0x........ was first observed at: