]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Added a regression test.
authorBart Van Assche <bvanassche@acm.org>
Sat, 29 May 2010 18:42:14 +0000 (18:42 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sat, 29 May 2010 18:42:14 +0000 (18:42 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11138

drd/tests/Makefile.am
drd/tests/pth_uninitialized_cond.c [new file with mode: 0644]
drd/tests/pth_uninitialized_cond.stderr.exp [new file with mode: 0644]
drd/tests/pth_uninitialized_cond.vgtest [new file with mode: 0644]

index 08d24aa7fe019aa8d5c139fbcbfa96ca1014c1d4..1daacbbb9652180a852ad77c78d3992fa300ab34 100644 (file)
@@ -159,6 +159,8 @@ EXTRA_DIST =                                        \
        pth_process_shared_mutex.vgtest             \
        pth_spinlock.stderr.exp                     \
        pth_spinlock.vgtest                         \
+       pth_uninitialized_cond.stderr.exp           \
+       pth_uninitialized_cond.vgtest               \
        qt4_atomic.stderr.exp                       \
        qt4_atomic.vgtest                           \
        qt4_mutex.stderr.exp                        \
@@ -280,6 +282,7 @@ check_PROGRAMS =      \
   pth_inconsistent_cond_wait \
   pth_mutex_reinit    \
   pth_process_shared_mutex   \
+  pth_uninitialized_cond \
   recursive_mutex     \
   rwlock_race         \
   rwlock_test         \
diff --git a/drd/tests/pth_uninitialized_cond.c b/drd/tests/pth_uninitialized_cond.c
new file mode 100644 (file)
index 0000000..6acfbc7
--- /dev/null
@@ -0,0 +1,28 @@
+/* Test program to verify whether DRD only complains about uninitialized
+ * condition variables for dynamically allocated memory.
+ */
+
+
+#include <pthread.h>
+#include <stdio.h>
+
+
+static pthread_cond_t s_cond1 = PTHREAD_COND_INITIALIZER;
+static pthread_cond_t s_cond2 = PTHREAD_COND_INITIALIZER;
+
+
+int main(int argc, char** argv)
+{
+    fprintf(stderr, "Statically initialized condition variable.\n");
+
+    pthread_cond_signal(&s_cond1);
+
+    fprintf(stderr, "Uninitialized condition variable.\n");
+
+    *((char*)&s_cond2 + sizeof(s_cond2) - 1) ^= 1;
+    pthread_cond_signal(&s_cond2);
+
+    fprintf(stderr, "Done.\n");
+
+    return 0;
+}
diff --git a/drd/tests/pth_uninitialized_cond.stderr.exp b/drd/tests/pth_uninitialized_cond.stderr.exp
new file mode 100644 (file)
index 0000000..a693944
--- /dev/null
@@ -0,0 +1,10 @@
+
+Statically initialized condition variable.
+Uninitialized condition variable.
+condition variable has not been initialized: cond 0x........
+   at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
+   by 0x........: main (pth_uninitialized_cond.c:?)
+
+Done.
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
diff --git a/drd/tests/pth_uninitialized_cond.vgtest b/drd/tests/pth_uninitialized_cond.vgtest
new file mode 100644 (file)
index 0000000..fe03139
--- /dev/null
@@ -0,0 +1,3 @@
+prereq: test -e pth_uninitialized_cond && ./supported_libpthread
+vgopts: --read-var-info=yes --check-stack-var=yes
+prog: pth_uninitialized_cond