|
From: <sv...@va...> - 2009-05-19 17:54:43
|
Author: bart
Date: 2009-05-19 18:54:29 +0100 (Tue, 19 May 2009)
New Revision: 9987
Log:
Merged trunk revisions 9851, 9852 and 9986: fixed DRD assertion failure triggered by mutex reinitialization and added regression test.
Added:
branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.c
branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.stderr.exp
branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.vgtest
Modified:
branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c
branches/VALGRIND_3_4_BRANCH/drd/tests/Makefile.am
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c 2009-05-19 17:26:20 UTC (rev 9986)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_mutex.c 2009-05-19 17:54:29 UTC (rev 9987)
@@ -189,6 +189,7 @@
VG_(get_IP)(vg_tid),
"Mutex reinitialization",
&MEI);
+ p->mutex_type = mutex_type;
return p;
}
p = mutex_get_or_allocate(mutex, mutex_type);
Modified: branches/VALGRIND_3_4_BRANCH/drd/tests/Makefile.am
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/Makefile.am 2009-05-19 17:26:20 UTC (rev 9986)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/Makefile.am 2009-05-19 17:54:29 UTC (rev 9987)
@@ -22,8 +22,8 @@
atomic_var.vgtest \
bar_bad.stderr.exp \
bar_bad.vgtest \
+ bar_trivial.stderr.exp \
bar_trivial.stdout.exp \
- bar_trivial.stderr.exp \
bar_trivial.vgtest \
boost_thread.stderr.exp \
boost_thread.vgtest \
@@ -109,8 +109,10 @@
pth_detached_sem.vgtest \
pth_inconsistent_cond_wait.stderr.exp \
pth_inconsistent_cond_wait.vgtest \
+ pth_mutex_reinit.stderr.exp \
+ pth_mutex_reinit.vgtest \
+ pth_process_shared_mutex.stderr.exp \
pth_process_shared_mutex.vgtest \
- pth_process_shared_mutex.stderr.exp \
pth_spinlock.stderr.exp \
pth_spinlock.vgtest \
qt4_mutex.stderr.exp \
@@ -230,8 +232,9 @@
pth_create_chain \
pth_detached \
pth_detached_sem \
+ pth_inconsistent_cond_wait \
+ pth_mutex_reinit \
pth_process_shared_mutex \
- pth_inconsistent_cond_wait \
pth_spinlock \
recursive_mutex \
rwlock_race \
@@ -357,6 +360,9 @@
pth_inconsistent_cond_wait_SOURCES = pth_inconsistent_cond_wait.c
pth_inconsistent_cond_wait_LDADD = -lpthread
+pth_mutex_reinit_SOURCES = pth_mutex_reinit.c
+pth_mutex_reinit_LDADD = -lpthread
+
pth_process_shared_mutex_SOURCES = pth_process_shared_mutex.c
pth_process_shared_mutex_LDADD = -lpthread
Copied: branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.c (from rev 9852, trunk/drd/tests/pth_mutex_reinit.c)
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.c (rev 0)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.c 2009-05-19 17:54:29 UTC (rev 9987)
@@ -0,0 +1,36 @@
+/* Test program that triggers mutex reinitialization. */
+
+
+#define _GNU_SOURCE
+
+#include <assert.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc, char** argv)
+{
+ pthread_mutex_t m;
+ pthread_mutexattr_t attr;
+
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
+ pthread_mutex_init(&m, &attr);
+ pthread_mutexattr_destroy(&attr);
+ pthread_mutex_lock(&m);
+ pthread_mutex_unlock(&m);
+
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+ pthread_mutex_init(&m, &attr);
+ pthread_mutexattr_destroy(&attr);
+ pthread_mutex_lock(&m);
+ pthread_mutex_unlock(&m);
+
+ pthread_mutex_destroy(&m);
+
+ fprintf(stderr, "Done.\n");
+
+ return 0;
+}
Copied: branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.stderr.exp (from rev 9852, trunk/drd/tests/pth_mutex_reinit.stderr.exp)
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.stderr.exp (rev 0)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.stderr.exp 2009-05-19 17:54:29 UTC (rev 9987)
@@ -0,0 +1,10 @@
+
+Mutex reinitialization: mutex 0x........, recursion count 0, owner 1.
+ at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (pth_mutex_reinit.c:?)
+mutex 0x........ was first observed at:
+ at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (pth_mutex_reinit.c:?)
+Done.
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Copied: branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.vgtest (from rev 9852, trunk/drd/tests/pth_mutex_reinit.vgtest)
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.vgtest (rev 0)
+++ branches/VALGRIND_3_4_BRANCH/drd/tests/pth_mutex_reinit.vgtest 2009-05-19 17:54:29 UTC (rev 9987)
@@ -0,0 +1,3 @@
+prereq: test -e pth_mutex_reinit && ./supported_libpthread
+vgopts: --var-info=yes --check-stack-var=yes
+prog: pth_mutex_reinit
|