From: Bart Van Assche Date: Mon, 7 Jul 2008 16:53:45 +0000 (+0000) Subject: Enabled support for nesting mutexes and condition variables in higher-level synchroni... X-Git-Tag: svn/VALGRIND_3_4_0~360 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=319a3c234ddce61058f143c61e1fcecf1714bbe0;p=thirdparty%2Fvalgrind.git Enabled support for nesting mutexes and condition variables in higher-level synchronization primitives. Changed mutex tracing output slightly. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8378 --- diff --git a/drd/tests/Makefile.am b/drd/tests/Makefile.am index 2a89af68c2..6c82843a76 100644 --- a/drd/tests/Makefile.am +++ b/drd/tests/Makefile.am @@ -92,6 +92,8 @@ EXTRA_DIST = \ pth_inconsistent_cond_wait.vgtest \ pth_spinlock.stderr.exp \ pth_spinlock.vgtest \ + qt4_mutex.stderr.exp \ + qt4_mutex.vgtest \ recursive_mutex.stderr.exp \ recursive_mutex.stdout.exp \ recursive_mutex.vgtest \ @@ -176,7 +178,7 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ -I$(top_builddir)/include -I$(top_srcdir)/VEX/pub AM_CXXFLAGS = $(AM_CFLAGS) -check_PROGRAMS_COMMON = \ +check_PROGRAMS = \ drd_bitmap_test \ fp_race \ hg01_all_ok \ @@ -229,16 +231,14 @@ check_PROGRAMS_COMMON = \ tc24_nonzero_sem \ trylock -check_PROGRAMS_OPENMP = omp_matinv omp_prime +if HAVE_QTCORE +check_PROGRAMS += qt4_mutex +endif if HAVE_OPENMP -check_PROGRAMS = $(check_PROGRAMS_COMMON) $(check_PROGRAMS_OPENMP) -else -check_PROGRAMS = $(check_PROGRAMS_COMMON) +check_PROGRAMS += omp_matinv omp_prime endif -# tc14_laog_dinphils -- hangs. - drd_bitmap_test_SOURCES = drd_bitmap_test.c drd_bitmap_test_CFLAGS = $(AM_CFLAGS) -O2 \ @@ -306,6 +306,11 @@ pth_inconsistent_cond_wait_LDADD = -lpthread pth_spinlock_SOURCES = pth_spinlock.c pth_spinlock_LDADD = -lpthread +if HAVE_QTCORE +qt4_mutex_SOURCES = qt4_mutex.cpp +qt4_mutex_LDADD = -lpthread -lQtCore +endif + recursive_mutex_SOURCES = recursive_mutex.c recursive_mutex_LDADD = -lpthread diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 index 63c2d2a2a6..e958296603 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 @@ -41,7 +41,7 @@ mutex 0x........ was first observed at: at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:116) [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 +[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:?) @@ -160,57 +160,57 @@ FIXME: can't figure out how to verify wrap of sem_post Destroying locked rwlock: rwlock 0x......... at 0x........: main (tc20_verifywrap.c:262) -[1/1] mutex_destroy error checking mutex 0x........ +[1/1] mutex_destroy error checking mutex 0x........ rc 1 owner 1 Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: main (tc20_verifywrap.c:262) -[1/1] mutex_destroy invalid mutex 0x........ -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 0 +[1/1] mutex_destroy invalid 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 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [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 9ed459c301..2a30a7df6d 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b @@ -41,7 +41,7 @@ mutex 0x........ was first observed at: at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:116) [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 +[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:?) diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 index 4feb3de1fa..38088e7cd2 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 @@ -22,14 +22,14 @@ The object at address 0x........ is not a mutex. at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:92) [1/1] mutex_init mutex 0x........ -[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0 +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 [1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 -[1/1] mutex_destroy mutex 0x........ +[1/1] mutex_destroy mutex 0x........ rc 1 owner 1 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] pre_mutex_lock invalid mutex 0x........ rc 0 owner 0 +[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:?) @@ -47,7 +47,7 @@ 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 +[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:?) @@ -166,57 +166,57 @@ FIXME: can't figure out how to verify wrap of sem_post Destroying locked rwlock: rwlock 0x......... at 0x........: main (tc20_verifywrap.c:262) -[1/1] mutex_destroy error checking mutex 0x........ +[1/1] mutex_destroy error checking mutex 0x........ rc 1 owner 1 Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: main (tc20_verifywrap.c:262) -[1/1] mutex_destroy invalid mutex 0x........ -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 0 +[1/1] mutex_destroy invalid 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 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 -[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1 +[1/1] mutex_trylock recursive mutex 0x........ rc 0 owner 1 [1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1 [1/1] mutex_unlock recursive mutex 0x........ rc 1 diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc index 87e8b91301..f36c14a5ad 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc @@ -22,14 +22,14 @@ The object at address 0x........ is not a mutex. at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:92) [1/1] mutex_init mutex 0x........ -[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0 +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 [1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 -[1/1] mutex_destroy mutex 0x........ +[1/1] mutex_destroy mutex 0x........ rc 1 owner 1 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] pre_mutex_lock invalid mutex 0x........ rc 0 owner 0 +[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:?) @@ -47,7 +47,7 @@ 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 +[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:?) diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 index 7dcfa91188..61740ed567 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 @@ -22,14 +22,14 @@ The object at address 0x........ is not a mutex. at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) by 0x........: main (tc20_verifywrap.c:92) [1/1] mutex_init mutex 0x........ -[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0 +[1/1] mutex_trylock mutex 0x........ rc 0 owner 0 [1/1] post_mutex_lock mutex 0x........ rc 0 owner 0 -[1/1] mutex_destroy mutex 0x........ +[1/1] mutex_destroy mutex 0x........ rc 1 owner 1 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] pre_mutex_lock invalid mutex 0x........ rc 0 owner 0 +[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:?) @@ -47,7 +47,7 @@ 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 +[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:?)