Semaphore and barrier reinitialization are now reported.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8297 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_semaphore.c b/exp-drd/drd_semaphore.c
index 0e97ea0..4bedf8f 100644
--- a/exp-drd/drd_semaphore.c
+++ b/exp-drd/drd_semaphore.c
@@ -123,11 +123,22 @@
thread_get_running_tid(),
semaphore);
}
- if (semaphore_get(semaphore))
+ p = semaphore_get(semaphore);
+ if (p)
{
- // To do: print an error message that a semaphore is being reinitialized.
+ const ThreadId vg_tid = VG_(get_running_tid)();
+ SemaphoreErrInfo SEI = { semaphore };
+ VG_(maybe_record_error)(vg_tid,
+ SemaphoreErr,
+ VG_(get_IP)(vg_tid),
+ "Semaphore reinitialization",
+ &SEI);
}
- p = semaphore_get_or_allocate(semaphore);
+ else
+ {
+ p = semaphore_get_or_allocate(semaphore);
+ }
+ tl_assert(p);
p->value = value;
return p;
}