Converted several assertions into error messages.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7461 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_mutex.c b/exp-drd/drd_mutex.c
index b9dfea4..355c66b 100644
--- a/exp-drd/drd_mutex.c
+++ b/exp-drd/drd_mutex.c
@@ -110,6 +110,16 @@
   {
     if (s_mutex[i].mutex == 0)
     {
+      if (drd_is_any_suppressed(mutex, mutex + size))
+      {
+         MutexErrInfo MEI = { 0, 0, 0 };
+         VG_(maybe_record_error)(VG_(get_running_tid)(),
+                                 MutexErr,
+                                 VG_(get_IP)(VG_(get_running_tid)()),
+                                 "Not a mutex",
+                                 &MEI);
+         return 0;
+      }
       mutex_initialize(&s_mutex[i], mutex, size, mutex_type);
       drd_start_suppression(mutex, mutex + size,
                             mutex_get_typename(&s_mutex[i]));
@@ -220,7 +230,6 @@
 {
   const DrdThreadId drd_tid = VgThreadIdToDrdThreadId(VG_(get_running_tid)());
   struct mutex_info* const p = mutex_get_or_allocate(mutex, size, mutex_type);
-  const DrdThreadId last_owner = p->owner;
 
   if (s_trace_mutex)
   {
@@ -235,6 +244,17 @@
                  p ? p->owner : VG_INVALID_THREADID);
   }
 
+  if (p == 0)
+  {
+     MutexErrInfo MEI = { 0, 0, 0 };
+     VG_(maybe_record_error)(VG_(get_running_tid)(),
+                             MutexErr,
+                             VG_(get_IP)(VG_(get_running_tid)()),
+                             "Not a mutex",
+                             &MEI);
+     return 0;
+  }
+
   tl_assert(mutex_type == mutex_type_mutex
             || mutex_type == mutex_type_spinlock);
   tl_assert(p->mutex_type == mutex_type);
@@ -265,6 +285,8 @@
 
   if (p->recursion_count == 1)
   {
+     const DrdThreadId last_owner = p->owner;
+
     if (last_owner != drd_tid && last_owner != DRD_INVALID_THREADID)
       thread_combine_vc2(drd_tid, mutex_get_last_vc(mutex));
     thread_new_segment(drd_tid);
@@ -299,6 +321,17 @@
                  p->owner);
   }
 
+  if (p == 0 || p->owner == DRD_INVALID_THREADID)
+  {
+     MutexErrInfo MEI = { 0, 0, 0 };
+     VG_(maybe_record_error)(vg_tid,
+                             MutexErr,
+                             VG_(get_IP)(vg_tid),
+                             "Not a mutex",
+                             &MEI);
+     return 0;
+  }
+
   tl_assert(p);
   tl_assert(p->mutex_type == mutex_type);
   tl_assert(p->owner != DRD_INVALID_THREADID);
@@ -363,7 +396,6 @@
 Bool mutex_is_locked_by(const Addr mutex, const DrdThreadId tid)
 {
   struct mutex_info* const p = mutex_get(mutex);
-  tl_assert(p);
   if (p)
   {
     return (p->recursion_count > 0 && p->owner == tid);