|
From: <sv...@va...> - 2008-02-25 19:46:09
|
Author: bart
Date: 2008-02-25 19:46:14 +0000 (Mon, 25 Feb 2008)
New Revision: 7461
Log:
Converted several assertions into error messages.
Modified:
trunk/exp-drd/drd_mutex.c
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-25 19:40:14 UTC (rev 7460)
+++ trunk/exp-drd/drd_mutex.c 2008-02-25 19:46:14 UTC (rev 7461)
@@ -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);
|