]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Made error messages more verbose.
authorBart Van Assche <bvanassche@acm.org>
Thu, 3 Jul 2008 10:57:30 +0000 (10:57 +0000)
committerBart Van Assche <bvanassche@acm.org>
Thu, 3 Jul 2008 10:57:30 +0000 (10:57 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8341

23 files changed:
exp-drd/drd_clientobj.c
exp-drd/drd_clientobj.h
exp-drd/drd_error.c
exp-drd/drd_mutex.c
exp-drd/tests/hold_lock_1.stderr.exp
exp-drd/tests/hold_lock_2.stderr.exp
exp-drd/tests/pth_barrier_reinit.stderr.exp
exp-drd/tests/pth_cond_race.stderr.exp
exp-drd/tests/pth_inconsistent_cond_wait.stderr.exp
exp-drd/tests/tc09_bad_unlock.stderr.exp
exp-drd/tests/tc09_bad_unlock.stderr.exp-glibc2.8
exp-drd/tests/tc10_rec_lock.stderr.exp
exp-drd/tests/tc12_rwl_trivial.stderr.exp
exp-drd/tests/tc18_semabuse.stderr.exp
exp-drd/tests/tc20_verifywrap.stderr.exp
exp-drd/tests/tc20_verifywrap.stderr.exp-glibc2.3
exp-drd/tests/tc20_verifywrap.stderr.exp-glibc2.8
exp-drd/tests/tc20_verifywrap2.stderr.exp
exp-drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
exp-drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
exp-drd/tests/tc23_bogus_condwait.stderr.exp
exp-drd/tests/trylock.stderr.exp

index 5090aacebe5656aec45b0a19d21a861df2d5d0a5..1d62db18324ea46c9adf7112b65734b038da8b0b 100644 (file)
@@ -68,6 +68,15 @@ void clientobj_cleanup(void)
   s_clientobj = 0;
 }
 
+/** Return the data associated with the client object at client address addr.
+ *  Return 0 if there is no client object in the set with the specified start
+ *  address.
+ */
+DrdClientobj* clientobj_get_any(const Addr addr)
+{
+  return VG_(OSetGen_Lookup)(s_clientobj, &addr);
+}
+
 /** Return the data associated with the client object at client address addr
  *  and that has object type t. Return 0 if there is no client object in the
  *  set with the specified start address.
@@ -121,6 +130,7 @@ clientobj_add(const Addr a1, const ObjType t)
   VG_(memset)(p, 0, sizeof(*p));
   p->any.a1   = a1;
   p->any.type = t;
+  p->any.first_observed_at = VG_(record_ExeContext)(VG_(get_running_tid)(), 0);
   VG_(OSetGen_Insert)(s_clientobj, p);
   tl_assert(VG_(OSetGen_Lookup)(s_clientobj, &a1) == p);
   drd_start_suppression(a1, a1 + 1, "clientobj");
@@ -200,3 +210,15 @@ DrdClientobj* clientobj_next(const ObjType t)
   return p;
 }
 
+const char* clientobj_type_name(const ObjType t)
+{
+  switch (t)
+  {
+  case ClientMutex:     return "mutex";
+  case ClientCondvar:   return "cond";
+  case ClientSemaphore: return "semaphore";
+  case ClientBarrier:   return "barrier";
+  case ClientRwlock:    return "rwlock";
+  }
+  return "(unknown)";
+}
index b8297b7f11285776b988195b9bc747773adc1ccd..19a361535f17666ca32d9bcdb25b7abf777b3650 100644 (file)
@@ -51,9 +51,10 @@ typedef enum {
 
 struct any
 {
-  Addr    a1;
-  ObjType type;
-  void    (*cleanup)(union drd_clientobj*);
+  Addr        a1;
+  ObjType     type;
+  void      (*cleanup)(union drd_clientobj*);
+  ExeContext* first_observed_at;
 };
 
 struct mutex_info
@@ -61,23 +62,24 @@ struct mutex_info
   Addr        a1;
   ObjType     type;
   void        (*cleanup)(union drd_clientobj*);
+  ExeContext* first_observed_at;
   MutexT      mutex_type;      // pthread_mutex_t or pthread_spinlock_t.
   int         recursion_count; // 0 if free, >= 1 if locked.
   DrdThreadId owner;           // owner if locked, last owner if free.
   Segment*    last_locked_segment;
   ULong       acquiry_time_ms;
-  ExeContext* first_observed_at;
   ExeContext* acquired_at;
 };
 
 struct cond_info
 {
-  Addr    a1;
-  ObjType type;
-  void    (*cleanup)(union drd_clientobj*);
-  int     waiter_count;
-  Addr    mutex; //Client mutex specified in pthread_cond_wait() call, and null
-                 //if no client threads are currently waiting on this cond.var.
+  Addr        a1;
+  ObjType     type;
+  void      (*cleanup)(union drd_clientobj*);
+  ExeContext* first_observed_at;
+  int         waiter_count;
+  Addr        mutex; // Client mutex specified in pthread_cond_wait() call, and
+           // null if no client threads are currently waiting on this cond.var.
 };
 
 struct semaphore_info
@@ -85,6 +87,7 @@ struct semaphore_info
   Addr        a1;
   ObjType     type;
   void        (*cleanup)(union drd_clientobj*);
+  ExeContext* first_observed_at;
   UWord       value;             // Semaphore value.
   UWord       waiters;           // Number of threads inside sem_wait().
   DrdThreadId last_sem_post_tid; // Thread ID associated with last sem_post().
@@ -96,6 +99,7 @@ struct barrier_info
   Addr     a1;
   ObjType  type;
   void     (*cleanup)(union drd_clientobj*);
+  ExeContext* first_observed_at;
   BarrierT barrier_type;      // pthread_barrier or gomp_barrier.
   Word     count;             // Participant count in a barrier wait.
   Word     pre_iteration;     // pthread_barrier_wait() call count modulo two.
@@ -110,6 +114,7 @@ struct rwlock_info
   Addr        a1;
   ObjType     type;
   void        (*cleanup)(union drd_clientobj*);
+  ExeContext* first_observed_at;
   OSet*       thread_info;
   ULong       acquiry_time_ms;
   ExeContext* acquired_at;
@@ -131,6 +136,7 @@ typedef union drd_clientobj
 void clientobj_set_trace(const Bool trace);
 void clientobj_init(void);
 void clientobj_cleanup(void);
+DrdClientobj* clientobj_get_any(const Addr addr);
 DrdClientobj* clientobj_get(const Addr addr, const ObjType t);
 Bool clientobj_present(const Addr a1, const Addr a2);
 DrdClientobj* clientobj_add(const Addr a1, const ObjType t);
@@ -138,5 +144,7 @@ Bool clientobj_remove(const Addr addr, const ObjType t);
 void clientobj_stop_using_mem(const Addr a1, const Addr a2);
 void clientobj_resetiter(void);
 DrdClientobj* clientobj_next(const ObjType t);
+const char* clientobj_type_name(const ObjType t);
+
 
 #endif /* __DRD_CLIENTOBJ_H */
index e66fdac5762c8c3f3d5c8c3191b799ac5734934b..72e781793b4adbe001b2a3a5fb13f5dc0b25c283 100644 (file)
@@ -70,21 +70,23 @@ void describe_malloced_addr(Addr const a, SizeT const len, AddrInfo* const ai)
   }
 }
 
-/** Report where a mutex has been observed for the first time. The printed
- *  call stack will either refer to a pthread_mutex_init() or a
- *  pthread_mutex_lock() call.
+/** Report where an object has been observed for the first time. The printed
+ *  call stack will either refer to a pthread_*_init() or a pthread_*lock()
+ *  call.
  */
-static void mutex_first_observed(const Addr mutex)
+static void first_observed(const Addr obj)
 {
-  struct mutex_info* mi;
+  DrdClientobj* cl;
 
-  mi = mutex_get(mutex);
-  if (mi)
+  cl = clientobj_get_any(obj);
+  if (cl)
   {
-    tl_assert(mi->first_observed_at);
+    tl_assert(cl->any.first_observed_at);
     VG_(message)(Vg_UserMsg,
-                 "Mutex 0x%lx was first observed at:", mutex);
-    VG_(pp_ExeContext)(mi->first_observed_at);
+                 "%s 0x%lx was first observed at:",
+                 clientobj_type_name(cl->any.type),
+                 obj);
+    VG_(pp_ExeContext)(cl->any.first_observed_at);
   }
 }
 
@@ -176,6 +178,7 @@ static void drd_tool_error_pp(Error* const e)
                    p->mutex);
     }
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
+    first_observed(p->mutex);
     break;
   }
   case CondErr: {
@@ -185,6 +188,7 @@ static void drd_tool_error_pp(Error* const e)
                  VG_(get_error_string)(e),
                  cdei->cond);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
+    first_observed(cdei->cond);
     break;
   }
   case CondDestrErr: {
@@ -195,7 +199,7 @@ static void drd_tool_error_pp(Error* const e)
                  cdi->cond, cdi->mutex,
                  DrdThreadIdToVgThreadId(cdi->tid), cdi->tid);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
-    mutex_first_observed(cdi->mutex);
+    first_observed(cdi->mutex);
     break;
   }
   case CondRaceErr: {
@@ -206,7 +210,8 @@ static void drd_tool_error_pp(Error* const e)
                  " by the signalling thread.",
                  cei->cond, cei->mutex);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
-    mutex_first_observed(cei->mutex);
+    first_observed(cei->cond);
+    first_observed(cei->mutex);
     break;
   }
   case CondWaitErr: {
@@ -218,8 +223,9 @@ static void drd_tool_error_pp(Error* const e)
                  cwei->mutex1,
                  cwei->mutex2);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
-    mutex_first_observed(cwei->mutex1);
-    mutex_first_observed(cwei->mutex2);
+    first_observed(cwei->cond);
+    first_observed(cwei->mutex1);
+    first_observed(cwei->mutex2);
     break;
   }
   case SemaphoreErr: {
@@ -229,17 +235,19 @@ static void drd_tool_error_pp(Error* const e)
                  "%s: semaphore 0x%lx",
                  VG_(get_error_string)(e),
                  sei->semaphore);
+    first_observed(sei->semaphore);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
     break;
   }
   case BarrierErr: {
-    BarrierErrInfo* sei =(BarrierErrInfo*)(VG_(get_error_extra)(e));
-    tl_assert(sei);
+    BarrierErrInfo* bei =(BarrierErrInfo*)(VG_(get_error_extra)(e));
+    tl_assert(bei);
     VG_(message)(Vg_UserMsg,
                  "%s: barrier 0x%lx",
                  VG_(get_error_string)(e),
-                 sei->barrier);
+                 bei->barrier);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
+    first_observed(bei->barrier);
     break;
   }
   case RwlockErr: {
@@ -250,6 +258,7 @@ static void drd_tool_error_pp(Error* const e)
                  VG_(get_error_string)(e),
                  p->rwlock);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
+    first_observed(p->rwlock);
     break;
   }
   case HoldtimeErr: {
@@ -265,6 +274,7 @@ static void drd_tool_error_pp(Error* const e)
                  p->hold_time_ms,
                  p->threshold_ms);
     VG_(pp_ExeContext)(VG_(get_error_where)(e));
+    first_observed(p->synchronization_object);
     break;
   }
   case GenericErr: {
index 148ec2397516ab0c45afe5a0ba278d17fde9571f..db1ef846344d6c807b0fa746a53b3fae1d13af2e 100644 (file)
@@ -76,7 +76,6 @@ void mutex_initialize(struct mutex_info* const p,
   p->owner               = DRD_INVALID_THREADID;
   p->last_locked_segment = 0;
   p->acquiry_time_ms     = 0;
-  p->first_observed_at   = VG_(record_ExeContext)(VG_(get_running_tid)(), 0);
   p->acquired_at         = 0;
 }
 
index 2571d627456a3ecbe022451e7b87af3731ff2080..45ed99db2723b20bb3ca0b1a21ddf747ef31cc4d 100644 (file)
@@ -6,6 +6,9 @@ Acquired at:
 Lock on mutex 0x........ was held during ... ms (threshold: 500 ms).
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: main (hold_lock.c:?)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (hold_lock.c:?)
 Locking rwlock exclusively ...
 
 Acquired at:
@@ -14,6 +17,9 @@ Acquired at:
 Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (hold_lock.c:?)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (hold_lock.c:?)
 Locking rwlock shared ...
 Done.
 
index b4a5acffd9b0b2820c450f0deec721c6c69ad39b..5620c9dda8f238bec9bd8ca929da43919462c0f3 100644 (file)
@@ -8,6 +8,9 @@ Acquired at:
 Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (hold_lock.c:?)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (hold_lock.c:?)
 Done.
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
index a29c1bd160f32a162367e64bee04188a86694353..d3cf90218a41775485c2ec03900a8891d3fa7bff 100644 (file)
@@ -2,5 +2,8 @@
 Barrier reinitializatoin: barrier 0x........
    at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_barrier_reinit.c:?)
+barrier 0x........ was first observed at:
+   at 0x........: pthread_barrier_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (pth_barrier_reinit.c:?)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
index 8e38ee6eb96bf5b6c9af0778a32e1e3d7468b2ae..e428656b5511cab48c5c465559005b61538a21bb 100644 (file)
@@ -6,7 +6,10 @@ Probably a race condition: condition variable 0x........ has been signaled but t
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
-Mutex 0x........ was first observed at:
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (pth_cond_race.c:?)
+mutex 0x........ was first observed at:
    at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_cond_race.c:?)
 
index 5300ec01d213b4226c679ebff5a82ae3c505545d..f08e28aea9ee03b9c0f449b1054bf13f086fd7f3 100644 (file)
@@ -6,10 +6,13 @@ Inconsistent association of condition variable and mutex: condition variable 0x.
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
-Mutex 0x........ was first observed at:
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (pth_inconsistent_cond_wait.c:?)
+mutex 0x........ was first observed at:
    at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_inconsistent_cond_wait.c:?)
-Mutex 0x........ was first observed at:
+mutex 0x........ was first observed at:
    at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_inconsistent_cond_wait.c:?)
 
@@ -17,14 +20,20 @@ Thread 1:
 Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
    at 0x........: pthread_cond_signal* (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_inconsistent_cond_wait.c:?)
-Mutex 0x........ was first observed at:
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (pth_inconsistent_cond_wait.c:?)
+mutex 0x........ was first observed at:
    at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_inconsistent_cond_wait.c:?)
 
 Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
    at 0x........: pthread_cond_signal* (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_inconsistent_cond_wait.c:?)
-Mutex 0x........ was first observed at:
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (pth_inconsistent_cond_wait.c:?)
+mutex 0x........ was first observed at:
    at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
    by 0x........: main (pth_inconsistent_cond_wait.c:?)
 
index 31aaabc295aa59784a95ce6c3f57a1dec9de7915..f7bf6fc966a534108b5a66ecf7ee5285fc421b2e 100644 (file)
@@ -3,6 +3,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: nearly_main (tc09_bad_unlock.c:27)
    by 0x........: main (tc09_bad_unlock.c:49)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:23)
+   by 0x........: main (tc09_bad_unlock.c:49)
 
 Thread 2:
 Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1.
@@ -11,6 +15,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:31)
+   by 0x........: main (tc09_bad_unlock.c:49)
 
 Thread 1:
 The object at address 0x........ is not a mutex.
@@ -26,6 +34,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: nearly_main (tc09_bad_unlock.c:27)
    by 0x........: main (tc09_bad_unlock.c:50)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:23)
+   by 0x........: main (tc09_bad_unlock.c:50)
 
 Thread 2:
 Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1.
@@ -34,6 +46,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:31)
+   by 0x........: main (tc09_bad_unlock.c:50)
 
 Thread 1:
 The object at address 0x........ is not a mutex.
index 7c6ca3ba9b8c98ddd0b8b42aeaed3f38e8dd3512..38d3759e0a624c230bb23c4e9fa003b21bedc8ac 100644 (file)
@@ -3,6 +3,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: nearly_main (tc09_bad_unlock.c:27)
    by 0x........: main (tc09_bad_unlock.c:49)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:23)
+   by 0x........: main (tc09_bad_unlock.c:49)
 
 Thread 2:
 Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1.
@@ -11,6 +15,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:31)
+   by 0x........: main (tc09_bad_unlock.c:49)
 
 Thread 1:
 The object at address 0x........ is not a mutex.
@@ -26,6 +34,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: nearly_main (tc09_bad_unlock.c:27)
    by 0x........: main (tc09_bad_unlock.c:50)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:23)
+   by 0x........: main (tc09_bad_unlock.c:50)
 
 Thread 2:
 Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1.
@@ -34,6 +46,10 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:31)
+   by 0x........: main (tc09_bad_unlock.c:50)
 
 Thread 1:
 The object at address 0x........ is not a mutex.
index 186510ef2cd6b76973c22c31eaa05ac40a3b3a8e..7b1c9ce35952bf8ff3df316add3bca07655a9529 100644 (file)
@@ -10,5 +10,9 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: nearly_main (tc10_rec_lock.c:42)
    by 0x........: main (tc10_rec_lock.c:47)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: nearly_main (tc10_rec_lock.c:24)
+   by 0x........: main (tc10_rec_lock.c:47)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
index 4e34a104b04d4a28fb642adff13f352691493acf..c9339196bd3a41bb5eac66af678e6b68491f01bf 100644 (file)
@@ -2,5 +2,8 @@
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc12_rwl_trivial.c:29)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc12_rwl_trivial.c:18)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
index 17d11f1418d025a215649c1799c4a8af59c1b91f..bfd3ab889cb8f93335df8a9801f917ec072dfa55 100644 (file)
@@ -1,9 +1,15 @@
 
 Semaphore reinitialization: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc18_semabuse.c:23)
    at 0x........: sem_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc18_semabuse.c:26)
 
 Invalid semaphore: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc18_semabuse.c:23)
    at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc18_semabuse.c:34)
 
index 57532209a8e87354b279d4f294aca4438d62e376..ce3fe3d957d8a0e58717bac0e9f2280c22ebd81a 100644 (file)
@@ -28,18 +28,30 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
 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.
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:125)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:108)
 
 ---------------- pthread_cond_wait et al ----------------
 
@@ -47,6 +59,9 @@ The object at address 0x........ is not a mutex.
 Mutex not locked: mutex 0x........, recursion count 0, owner 0.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:147)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:145)
 
 FIXME: can't figure out how to verify wrap of pthread_cond_signal
 
@@ -60,6 +75,9 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:179)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:178)
 (1) no error on next line
 (2) no error on next line
 (3)    ERROR on next line
@@ -67,10 +85,16 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:196)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 Reader-writer lock reinitialization: rwlock 0x.........
    at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:199)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 (4) no error on next line
 (5) no error on next line
 (6) no error on next line
@@ -80,11 +104,17 @@ Reader-writer lock reinitialization: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:212)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 ---------------- sem_* ----------------
 
 
 Semaphore reinitialization: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:231)
 
@@ -92,6 +122,9 @@ FIXME: can't figure out how to verify wrap of sem_destroy
 
 
 Invalid semaphore: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:242)
 
index 83f217cfa9f4da376a6d061081611b51d7bc7881..b178aabc0ab640c634c152b6e185818cb421d072 100644 (file)
@@ -46,6 +46,9 @@ The object at address 0x........ is not a mutex.
 Mutex not locked: mutex 0x........, recursion count 0, owner 0.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:147)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:145)
 
 FIXME: can't figure out how to verify wrap of pthread_cond_signal
 
@@ -59,6 +62,9 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:179)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:178)
 (1) no error on next line
 (2) no error on next line
 (3)    ERROR on next line
@@ -66,10 +72,16 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:196)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 Reader-writer lock reinitialization: rwlock 0x.........
    at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:199)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 (4) no error on next line
 (5) no error on next line
 (6) no error on next line
@@ -79,11 +91,17 @@ Reader-writer lock reinitialization: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:212)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 ---------------- sem_* ----------------
 
 
 Semaphore reinitialization: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:231)
 
@@ -91,6 +109,9 @@ FIXME: can't figure out how to verify wrap of sem_destroy
 
 
 Invalid semaphore: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:242)
 
index 47d53ba239d1349c586fef9885d60334e4f5cc0c..d4e7175e5e3a7e43fd853eebcbbfb7d133c7f74c 100644 (file)
@@ -28,18 +28,30 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
 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.
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:125)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:108)
 
 ---------------- pthread_cond_wait et al ----------------
 
@@ -47,6 +59,9 @@ The object at address 0x........ is not a mutex.
 Mutex not locked: mutex 0x........, recursion count 0, owner 0.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:147)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:145)
 
 FIXME: can't figure out how to verify wrap of pthread_cond_signal
 
@@ -60,6 +75,9 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:179)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:178)
 (1) no error on next line
 (2) no error on next line
 (3)    ERROR on next line
@@ -67,10 +85,16 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:196)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 Reader-writer lock reinitialization: rwlock 0x.........
    at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:199)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 (4) no error on next line
 (5) no error on next line
 (6) no error on next line
@@ -88,6 +112,9 @@ FIXME: can't figure out how to verify wrap of sem_destroy
 
 
 Invalid semaphore: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:242)
 
index 1c8e90985287547d109d1d3fbf3e7e17370ee8f3..c207a43c80fb45d4d46a310be6705a91ca336a1e 100644 (file)
@@ -34,24 +34,36 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
 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] pre_mutex_lock  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
 
 The object at address 0x........ is not a mutex.
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:125)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:108)
 
 ---------------- pthread_cond_wait et al ----------------
 
@@ -62,6 +74,9 @@ The object at address 0x........ is not a mutex.
 Mutex not locked: mutex 0x........, recursion count 0, owner 0.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:147)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:145)
 [1/1] cond_pre_wait   cond 0x........
 [1/1] cond_post_wait  cond 0x........
 [1/1] cond_post_wait  error checking mutex 0x........ rc 0 owner 0
@@ -84,6 +99,9 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:179)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:178)
 (1) no error on next line
 (2) no error on next line
 (3)    ERROR on next line
@@ -91,10 +109,16 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:196)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 Reader-writer lock reinitialization: rwlock 0x.........
    at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:199)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 (4) no error on next line
 (5) no error on next line
 (6) no error on next line
@@ -104,6 +128,9 @@ Reader-writer lock reinitialization: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:212)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 ---------------- sem_* ----------------
 
@@ -111,6 +138,9 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 [1/1] semaphore_init      0x........
 
 Semaphore reinitialization: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:231)
 
@@ -120,6 +150,9 @@ FIXME: can't figure out how to verify wrap of sem_destroy
 [1/1] semaphore_post_wait 0x........
 
 Invalid semaphore: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:242)
 [1/1] semaphore_post      0x........
index a64518da0134a195d47183106eb9f3cc4f72cb70..654a370f583cfeffa409c7d6e1c3f9d5940fcdf9 100644 (file)
@@ -59,6 +59,9 @@ The object at address 0x........ is not a mutex.
 Mutex not locked: mutex 0x........, recursion count 0, owner 0.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:147)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:145)
 [1/1] cond_pre_wait   cond 0x........
 [1/1] cond_post_wait  cond 0x........
 [1/1] cond_post_wait  error checking mutex 0x........ rc 0 owner 0
@@ -81,6 +84,9 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:179)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:178)
 (1) no error on next line
 (2) no error on next line
 (3)    ERROR on next line
@@ -88,10 +94,16 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:196)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 Reader-writer lock reinitialization: rwlock 0x.........
    at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:199)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 (4) no error on next line
 (5) no error on next line
 (6) no error on next line
@@ -101,6 +113,9 @@ Reader-writer lock reinitialization: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:212)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 ---------------- sem_* ----------------
 
@@ -108,6 +123,9 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 [1/1] semaphore_init      0x........
 
 Semaphore reinitialization: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:231)
 
@@ -117,6 +135,9 @@ FIXME: can't figure out how to verify wrap of sem_destroy
 [1/1] semaphore_post_wait 0x........
 
 Invalid semaphore: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:242)
 [1/1] semaphore_post      0x........
index cd8e41fb72caec221e801fd46c0bcfa79954840c..772e1bc57d9eb19f1c353a6bc79e140db53a3e90 100644 (file)
@@ -34,24 +34,36 @@ Destroying locked mutex: mutex 0x........, recursion count 1, owner 1.
 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] pre_mutex_lock  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
 
 The object at address 0x........ is not a mutex.
    at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:125)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:108)
 
 ---------------- pthread_cond_wait et al ----------------
 
@@ -62,6 +74,9 @@ The object at address 0x........ is not a mutex.
 Mutex not locked: mutex 0x........, recursion count 0, owner 0.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:147)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:145)
 [1/1] cond_pre_wait   cond 0x........
 [1/1] cond_post_wait  cond 0x........
 [1/1] cond_post_wait  error checking mutex 0x........ rc 0 owner 0
@@ -84,6 +99,9 @@ FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:179)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:178)
 (1) no error on next line
 (2) no error on next line
 (3)    ERROR on next line
@@ -91,10 +109,16 @@ Reader-writer lock not locked by calling thread: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:196)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 Reader-writer lock reinitialization: rwlock 0x.........
    at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:199)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 (4) no error on next line
 (5) no error on next line
 (6) no error on next line
@@ -104,6 +128,9 @@ Reader-writer lock reinitialization: rwlock 0x.........
 Reader-writer lock not locked by calling thread: rwlock 0x.........
    at 0x........: pthread_rwlock_unlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:212)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:186)
 
 ---------------- sem_* ----------------
 
@@ -116,6 +143,9 @@ FIXME: can't figure out how to verify wrap of sem_destroy
 [1/1] semaphore_post_wait 0x........
 
 Invalid semaphore: semaphore 0x........
+semaphore 0x........ was first observed at:
+   at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:228)
    at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc20_verifywrap.c:242)
 [1/1] semaphore_post      0x........
index df2d4c10be9d1063efca765e40c021e1d06209dd..217757ce2edde1aeea4b53d3e385d0152d111b7b 100644 (file)
@@ -2,5 +2,11 @@
 Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 3.
    at 0x........: pthread_join (drd_pthread_intercepts.c:?)
    by 0x........: main (tc22_exit_w_lock.c:43)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+   by 0x........: child_fn1 (tc22_exit_w_lock.c:18)
+   by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
+   by 0x........: (within libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
 
 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
index 3b0a93a1e502243dff8c241012264a4d97215ea7..1f7bde6cd5a28e5e18062c6809d98c1a60325bbc 100644 (file)
@@ -14,11 +14,17 @@ Probably a race condition: condition variable 0x........ has been signaled but t
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:56)
 
 Thread 1:
 Mutex not locked: mutex 0x........, recursion count 0, owner 0.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc23_bogus_condwait.c:72)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:51)
 
 Thread 3:
 Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
@@ -27,7 +33,10 @@ Probably a race condition: condition variable 0x........ has been signaled but t
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
-Mutex 0x........ was first observed at:
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:56)
+mutex 0x........ was first observed at:
    at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
    by 0x........: main (tc23_bogus_condwait.c:51)
 
@@ -35,10 +44,16 @@ Thread 1:
 The object at address 0x........ is not a mutex.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc23_bogus_condwait.c:75)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:57)
 
 The object at address 0x........ is not a mutex.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc23_bogus_condwait.c:75)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:57)
 
 Thread 3:
 Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
@@ -47,11 +62,20 @@ Probably a race condition: condition variable 0x........ has been signaled but t
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:56)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:57)
 
 Thread 1:
 Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
    at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
    by 0x........: main (tc23_bogus_condwait.c:78)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:53)
 
 Thread 3:
 Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
@@ -60,7 +84,10 @@ Probably a race condition: condition variable 0x........ has been signaled but t
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
-Mutex 0x........ was first observed at:
+cond 0x........ was first observed at:
+   at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:56)
+mutex 0x........ was first observed at:
    at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
    by 0x........: main (tc23_bogus_condwait.c:53)
 The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) !
@@ -72,5 +99,8 @@ Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1
    by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
    by 0x........: (within libpthread-?.?.so)
    by 0x........: clone (in /...libc...)
+mutex 0x........ was first observed at:
+   at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:53)
 
 ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
index cd9c7dd021788788f22b513c413f6fcd905c44da..68993a51e4b4370a638f8324e2ea5872aac99ca8 100644 (file)
@@ -9,6 +9,9 @@ Attempt to lock for writing recursively (not allowed).
 Recursive writer locking not allowed: rwlock 0x.........
    at 0x........: pthread_rwlock_wrlock* (drd_pthread_intercepts.c:?)
    by 0x........: main (trylock.c:?)
+rwlock 0x........ was first observed at:
+   at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?)
+   by 0x........: main (trylock.c:?)
 Locking mutex via pthread_mutex_trylock().
 Locking mutex via pthread_mutex_lock().
 Locking mutex via pthread_mutex_timedlock().