]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Modified recursive_mutex regression test: improved portability by removing usage...
authorBart Van Assche <bvanassche@acm.org>
Fri, 10 Jul 2009 09:26:29 +0000 (09:26 +0000)
committerBart Van Assche <bvanassche@acm.org>
Fri, 10 Jul 2009 09:26:29 +0000 (09:26 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10425

drd/tests/recursive_mutex.c
drd/tests/recursive_mutex.stderr.exp
drd/tests/recursive_mutex.stdout.exp [deleted file]
drd/tests/recursive_mutex.vgtest

index 3ddfc253801f906598b30eeeecf59c9088b10031..7d8ff2d371caffe1546451c87c7d998edaebc681 100644 (file)
 #include "../../config.h"
 
 
-#if !defined(VGO_darwin)
 static void lock_twice(pthread_mutex_t* const p)
 {
-  pthread_mutex_lock(p);
-  pthread_mutex_lock(p);
-  pthread_mutex_unlock(p);
-  pthread_mutex_unlock(p);
+  if (pthread_mutex_trylock(p) != 0)
+    fprintf(stderr, "first lock call failed !\n");
+  if (pthread_mutex_trylock(p) != 0)
+    fprintf(stderr, "second lock call failed !\n");
+  if (pthread_mutex_unlock(p) != 0)
+    fprintf(stderr, "first unlock call failed !\n");
+  if (pthread_mutex_unlock(p) != 0)
+    fprintf(stderr, "second unlock call failed !\n");
 }
-#endif
 
 int main(int argc, char** argv)
 {
-  /* Let the program abort after 3 seconds instead of leaving it deadlocked. */
-  alarm(3);
-
 #if defined(HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
   {
     pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
 
-    printf("Recursive mutex (statically initialized).\n");
+    fprintf(stderr, "Recursive mutex (statically initialized).\n");
     lock_twice(&m);
     pthread_mutex_destroy(&m);
   }
@@ -39,7 +38,7 @@ int main(int argc, char** argv)
     pthread_mutex_t m;
     pthread_mutexattr_t attr;
 
-    printf("Recursive mutex (initialized via mutex attributes).\n");
+    fprintf(stderr, "\nRecursive mutex (initialized via mutex attributes).\n");
     pthread_mutexattr_init(&attr);
     pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
     pthread_mutex_init(&m, &attr);
@@ -53,7 +52,7 @@ int main(int argc, char** argv)
     pthread_mutex_t m;
     pthread_mutexattr_t attr;
 
-    printf("Error checking mutex.\n");
+    fprintf(stderr, "\nError checking mutex.\n");
     pthread_mutexattr_init(&attr);
     pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK_NP);
     pthread_mutex_init(&m, &attr);
@@ -63,17 +62,14 @@ int main(int argc, char** argv)
   }
 #endif
 
-// DDD: Darwin doesn't support signals yet, so the alarm() call doesn't kick
-// in, which causes it to hang.
-#if !defined(VGO_darwin)
   {
     pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
 
-    printf("Non-recursive mutex.\n");
-    fflush(stdout);
+    fprintf(stderr, "\nNon-recursive mutex.\n");
     lock_twice(&m);
   }
-  printf("Done.\n");
-#endif
+
+  fprintf(stderr, "\nDone.\n");
+
   return 0;
 }
index 4cbed89c1ac45a413fba99d08d896678dfbfcb93..bdd5089333b152261ccc04c06bbb8ded047fc240 100644 (file)
@@ -1 +1,31 @@
-ERROR SUMMARY: 4 errors from 4 contexts
+
+Recursive mutex (statically initialized).
+
+Recursive mutex (initialized via mutex attributes).
+
+Error checking mutex.
+second lock call failed !
+Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1.
+   at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
+   by 0x........: lock_twice (recursive_mutex.c:?)
+   by 0x........: main (recursive_mutex.c:?)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (recursive_mutex.c:?)
+second unlock call failed !
+
+Non-recursive mutex.
+second lock call failed !
+
+Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1.
+   at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
+   by 0x........: lock_twice (recursive_mutex.c:?)
+   by 0x........: main (recursive_mutex.c:?)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?)
+   by 0x........: lock_twice (recursive_mutex.c:?)
+   by 0x........: main (recursive_mutex.c:?)
+
+Done.
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/drd/tests/recursive_mutex.stdout.exp b/drd/tests/recursive_mutex.stdout.exp
deleted file mode 100644 (file)
index 41dca6e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Recursive mutex (statically initialized).
-Recursive mutex (initialized via mutex attributes).
-Error checking mutex.
-Non-recursive mutex.
index dcb89376da9b94e29e3621e8950593f8cae20ed6..23961ab060cb958f67dcb619132cc70ea57a2697 100644 (file)
@@ -1,4 +1,4 @@
 prereq: ./supported_libpthread
-vgopts: --check-stack-var=yes
+vgopts: --check-stack-var=yes --var-info=yes
 prog: recursive_mutex
-stderr_filter: filter_error_summary
+stderr_filter: filter_stderr_and_thread_no