if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_init 0x%lx",
+ "[%d/%d] semaphore_init 0x%lx value %d",
VG_(get_running_tid)(),
thread_get_running_tid(),
- semaphore);
+ semaphore,
+ value);
}
p = semaphore_get(semaphore);
if (p)
{
struct semaphore_info* p;
+ p = semaphore_get(semaphore);
+
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_destroy 0x%lx",
+ "[%d/%d] semaphore_destroy 0x%lx value %d",
VG_(get_running_tid)(),
thread_get_running_tid(),
- semaphore);
+ semaphore,
+ p ? p->value : 0);
}
- p = semaphore_get(semaphore);
-
if (p == 0)
{
GenericErrInfo GEI;
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_pre_wait 0x%lx",
+ "[%d/%d] semaphore_pre_wait 0x%lx value %d",
VG_(get_running_tid)(),
thread_get_running_tid(),
- semaphore);
+ semaphore,
+ p->value);
}
tl_assert(p);
tl_assert((int)p->waiters >= 0);
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post_wait 0x%lx",
+ "[%d/%d] semaphore_post_wait 0x%lx value %d",
VG_(get_running_tid)(),
thread_get_running_tid(),
- semaphore);
+ semaphore,
+ p ? p->value - 1 : 0);
}
tl_assert(p->waiters > 0);
p->waiters--;
{
struct semaphore_info* p;
+ p = semaphore_get_or_allocate(semaphore);
+ p->value++;
+
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post 0x%lx",
+ "[%d/%d] semaphore_post 0x%lx value %d",
VG_(get_running_tid)(),
thread_get_running_tid(),
- semaphore);
+ semaphore,
+ p->value);
}
- p = semaphore_get_or_allocate(semaphore);
- p->value++;
+
if (p->value == 1)
{
p->last_sem_post_tid = tid;
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........
-[1/1] semaphore_init 0x........
+[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........
-[1/1] semaphore_post_wait 0x........
+[1/1] semaphore_pre_wait 0x........ value 0
+[1/1] semaphore_post_wait 0x........ value -1
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........
+[1/1] semaphore_post 0x........ value 1
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........
+[1/1] semaphore_destroy 0x........ value 1
------------ dealloc of mem holding locks ------------
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........
-[1/1] semaphore_init 0x........
+[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........
-[1/1] semaphore_post_wait 0x........
+[1/1] semaphore_pre_wait 0x........ value 0
+[1/1] semaphore_post_wait 0x........ value -1
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........
+[1/1] semaphore_post 0x........ value 1
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........
+[1/1] semaphore_destroy 0x........ value 1
------------ dealloc of mem holding locks ------------
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........
-[1/1] semaphore_init 0x........
+[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........
-[1/1] semaphore_post_wait 0x........
+[1/1] semaphore_pre_wait 0x........ value 0
+[1/1] semaphore_post_wait 0x........ value -1
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........
+[1/1] semaphore_post 0x........ value 1
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........
+[1/1] semaphore_destroy 0x........ value 1
------------ dealloc of mem holding locks ------------
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........
-[1/1] semaphore_init 0x........
+[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........
-[1/1] semaphore_post_wait 0x........
+[1/1] semaphore_pre_wait 0x........ value 0
+[1/1] semaphore_post_wait 0x........ value -1
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........
+[1/1] semaphore_post 0x........ value 1
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........
+[1/1] semaphore_destroy 0x........ value 1
------------ dealloc of mem holding locks ------------
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........
-[1/1] semaphore_init 0x........
+[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 0
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........
-[1/1] semaphore_post_wait 0x........
+[1/1] semaphore_pre_wait 0x........ value 0
+[1/1] semaphore_post_wait 0x........ value -1
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........
+[1/1] semaphore_post 0x........ value 1
FIXME: can't figure out how to verify wrap of sem_post
-[1/1] semaphore_destroy 0x........
+[1/1] semaphore_destroy 0x........ value 1
------------ dealloc of mem holding locks ------------