From: Bart Van Assche Date: Sun, 14 Dec 2008 08:56:49 +0000 (+0000) Subject: Added more semaphore tracing info. X-Git-Tag: svn/VALGRIND_3_4_0~72 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98c56464273e38818b907d1bedc1b829c4600aea;p=thirdparty%2Fvalgrind.git Added more semaphore tracing info. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8825 --- diff --git a/drd/drd_semaphore.c b/drd/drd_semaphore.c index d3d0d17696..1125c1b174 100644 --- a/drd/drd_semaphore.c +++ b/drd/drd_semaphore.c @@ -117,10 +117,11 @@ struct semaphore_info* semaphore_init(const Addr semaphore, 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) @@ -147,17 +148,18 @@ void semaphore_destroy(const Addr semaphore) { 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; @@ -181,10 +183,11 @@ void semaphore_pre_wait(const Addr semaphore) 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); @@ -205,10 +208,11 @@ void semaphore_post_wait(const DrdThreadId tid, const Addr semaphore, 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--; @@ -241,16 +245,19 @@ void semaphore_pre_post(const DrdThreadId tid, const Addr semaphore) { 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; diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 index 871518821d..e33af90848 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 @@ -128,8 +128,8 @@ rwlock 0x........ was first observed at: ---------------- 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:?) @@ -140,8 +140,8 @@ semaphore 0x........ was first observed at: 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:?) @@ -149,11 +149,11 @@ Invalid semaphore: semaphore 0x........ 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 ------------ diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b index b6de7a1aa7..b50c673e3a 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b @@ -128,8 +128,8 @@ rwlock 0x........ was first observed at: ---------------- 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:?) @@ -140,8 +140,8 @@ semaphore 0x........ was first observed at: 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:?) @@ -149,11 +149,11 @@ Invalid semaphore: semaphore 0x........ 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 ------------ diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 index 38088e7cd2..5584e5382b 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 @@ -134,8 +134,8 @@ rwlock 0x........ was first observed at: ---------------- 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:?) @@ -146,8 +146,8 @@ semaphore 0x........ was first observed at: 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:?) @@ -155,11 +155,11 @@ Invalid semaphore: semaphore 0x........ 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 ------------ diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc index 557fdf5a8f..f79d69a885 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc @@ -134,8 +134,8 @@ rwlock 0x........ was first observed at: ---------------- 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:?) @@ -146,8 +146,8 @@ semaphore 0x........ was first observed at: 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:?) @@ -155,11 +155,11 @@ Invalid semaphore: semaphore 0x........ 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 ------------ diff --git a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 index 61740ed567..e551bada2f 100644 --- a/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 +++ b/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 @@ -134,13 +134,13 @@ rwlock 0x........ was first observed at: ---------------- 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:?) @@ -148,11 +148,11 @@ Invalid semaphore: semaphore 0x........ 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 ------------