|
From: <sv...@va...> - 2012-08-25 07:25:09
|
bart 2012-08-25 08:25:00 +0100 (Sat, 25 Aug 2012)
New Revision: 12898
Log:
drd: Correct semaphore tracing in case sem_*wait() did not wait. See also #305690.
Modified files:
trunk/drd/drd_semaphore.c
Modified: trunk/drd/drd_semaphore.c (+5 -4)
===================================================================
--- trunk/drd/drd_semaphore.c 2012-08-24 18:59:03 +01:00 (rev 12897)
+++ trunk/drd/drd_semaphore.c 2012-08-25 08:25:00 +01:00 (rev 12898)
@@ -347,16 +347,17 @@
struct semaphore_info* p;
Segment* sg;
+ tl_assert(waited == 0 || waited == 1);
p = semaphore_get(semaphore);
if (s_trace_semaphore)
- DRD_(trace_msg)("[%d] sem_wait 0x%lx value %u -> %u",
+ DRD_(trace_msg)("[%d] sem_wait 0x%lx value %u -> %u%s",
DRD_(thread_get_running_tid)(), semaphore,
- p ? p->value : 0, p ? p->value - 1 : 0);
+ p ? p->value : 0, p ? p->value - waited : 0,
+ waited ? "" : " (did not wait)");
if (p) {
p->waiters--;
- if (waited)
- p->value--;
+ p->value -= waited;
}
/*
|