tc07_hbl1.vgtest tc07_hbl1.stdout.exp tc07_hbl1.stderr.exp \
tc08_hbl2.vgtest tc08_hbl2.stdout.exp tc08_hbl2.stderr.exp \
tc09_bad_unlock.vgtest tc09_bad_unlock.stdout.exp \
- tc09_bad_unlock.stderr.exp-glibc23-amd64 \
tc09_bad_unlock.stderr.exp-glibc25-amd64 \
- tc09_bad_unlock.stderr.exp-glibc25-x86 \
tc10_rec_lock.vgtest tc10_rec_lock.stdout.exp tc10_rec_lock.stderr.exp \
tc11_XCHG.vgtest tc11_XCHG.stdout.exp tc11_XCHG.stderr.exp \
tc12_rwl_trivial.vgtest tc12_rwl_trivial.stdout.exp \
tc17_sembar.vgtest tc17_sembar.stdout.exp \
tc17_sembar.stderr.exp \
tc18_semabuse.vgtest tc18_semabuse.stdout.exp \
- tc18_semabuse.stderr.exp-glibc25-amd64 \
tc18_semabuse.stderr.exp-glibc28-amd64 \
tc19_shadowmem.vgtest tc19_shadowmem.stdout.exp \
tc19_shadowmem.stderr.exp \
tc20_verifywrap.vgtest tc20_verifywrap.stdout.exp \
- tc20_verifywrap.stderr.exp-glibc25-amd64 \
tc20_verifywrap.stderr.exp-glibc27-amd64 \
tc21_pthonce.vgtest tc21_pthonce.stdout.exp tc21_pthonce.stderr.exp \
tc22_exit_w_lock.vgtest tc22_exit_w_lock.stdout.exp \
+---Thread-Announcement------------------------------------------
+
Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:84)
- by 0x........: main (pth_barrier.c:107)
+ at 0x........: clone (in /...libc...)
+ by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+
+---Thread-Announcement------------------------------------------
Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:84)
- by 0x........: main (pth_barrier.c:107)
+ at 0x........: clone (in /...libc...)
+ by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+
+----------------------------------------------------------------
Possible data race during write of size 4 at 0x........ by thread #x
+Locks held: none
at 0x........: threadfunc (pth_barrier.c:57)
by 0x........: mythread_wrapper (hg_intercepts.c:...)
...
- This conflicts with a previous write of size 4 by thread #x
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
at 0x........: threadfunc (pth_barrier.c:57)
by 0x........: mythread_wrapper (hg_intercepts.c:...)
...
- Address 0x........ is 0 bytes inside a block of size 4 alloc'd
+
+Address 0x........ is 0 bytes inside a block of size 4 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: barriers_and_races (pth_barrier.c:72)
by 0x........: main (pth_barrier.c:107)
prereq: test -e bar_trivial
prog: ../../drd/tests/pth_barrier
args: 32 1 1
-vgopts: -q
+vgopts: -q --num-callers=3
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>do_clone</fn>
+ <dir>...</dir>
+ <file>clone.S</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
+++ /dev/null
-
-Thread #x is the program's root thread
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:27)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:23)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:35)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x unlocked lock at 0x........ currently held by thread #x
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: child_fn (tc09_bad_unlock.c:11)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x unlocked an invalid lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:27)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:23)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:35)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x unlocked lock at 0x........ currently held by thread #x
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: child_fn (tc09_bad_unlock.c:11)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x unlocked an invalid lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+---Thread-Announcement------------------------------------------
+
Thread #x is the program's root thread
+----------------------------------------------------------------
+
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
by 0x........: main (tc09_bad_unlock.c:49)
+---Thread-Announcement------------------------------------------
+
Thread #x was created
...
by 0x........: pthread_create@* (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:35)
by 0x........: main (tc09_bad_unlock.c:49)
+----------------------------------------------------------------
+
Thread #x unlocked lock at 0x........ currently held by thread #x
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: child_fn (tc09_bad_unlock.c:11)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
+----------------------------------------------------------------
+
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_unlock failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc09_bad_unlock.c:49)
---------------------
+----------------------------------------------------------------
+
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: nearly_main (tc09_bad_unlock.c:23)
by 0x........: main (tc09_bad_unlock.c:49)
+----------------------------------------------------------------
+
Thread #x: Attempt to re-lock a non-recursive lock I already hold
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:49)
+----------------------------------------------------------------
+
Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:32)
by 0x........: main (tc09_bad_unlock.c:50)
+---Thread-Announcement------------------------------------------
+
Thread #x was created
...
by 0x........: pthread_create@* (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:35)
by 0x........: main (tc09_bad_unlock.c:50)
+----------------------------------------------------------------
+
Thread #x unlocked lock at 0x........ currently held by thread #x
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: child_fn (tc09_bad_unlock.c:11)
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
+----------------------------------------------------------------
+
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_unlock failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
+----------------------------------------------------------------
+
Thread #x: Exiting thread still holds 1 lock
...
+++ /dev/null
-
-Thread #x is the program's root thread
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:27)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:23)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:35)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x unlocked lock at 0x........ currently held by thread #x
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: child_fn (tc09_bad_unlock.c:11)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x unlocked an invalid lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:27)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:23)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:35)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x unlocked lock at 0x........ currently held by thread #x
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: child_fn (tc09_bad_unlock.c:11)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x unlocked an invalid lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-
-ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
+++ /dev/null
-
-Thread #x is the program's root thread
-
-Thread #x's call to sem_init failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_init@* (hg_intercepts.c:...)
- by 0x........: main (tc18_semabuse.c:23)
-
-Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post
- at 0x........: sem_wait_WRK (hg_intercepts.c:...)
- by 0x........: sem_wait (hg_intercepts.c:...)
- by 0x........: main (tc18_semabuse.c:34)
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+---Thread-Announcement------------------------------------------
+
Thread #x is the program's root thread
+----------------------------------------------------------------
+
Thread #x's call to sem_init failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: sem_init@* (hg_intercepts.c:...)
by 0x........: main (tc18_semabuse.c:23)
+----------------------------------------------------------------
+
Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post
at 0x........: sem_wait_WRK (hg_intercepts.c:...)
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc18_semabuse.c:34)
+----------------------------------------------------------------
+
Thread #x's call to sem_post failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: sem_post_WRK (hg_intercepts.c:...)
+++ /dev/null
-
-
-
------- This is output for >= glibc 2.4 ------
-
----------------- pthread_create/join ----------------
-
-Thread #x is the program's root thread
-
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:76)
-
-Possible data race during write of size 2 at 0x........ by thread #x
- at 0x........: main (tc20_verifywrap.c:78)
- This conflicts with a previous write of size 2 by thread #x
- at 0x........: racy_child (tc20_verifywrap.c:34)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
- Location 0x........ is 0 bytes inside global var "unprotected"
- declared at tc20_verifywrap.c:27
-
-Thread #x's call to pthread_join failed
- with error code 35 (EDEADLK: Resource deadlock would occur)
- at 0x........: pthread_join (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:83)
-
-
----------------- pthread_mutex_lock et al ----------------
-
-Thread #x's call to pthread_mutex_init failed
- with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:92)
-
-Thread #x: pthread_mutex_destroy of a locked mutex
- at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:102)
-
-Thread #x's call to pthread_mutex_destroy failed
- with error code 16 (EBUSY: Device or resource busy)
- at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:102)
-
-Thread #x's call to pthread_mutex_lock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:108)
-
-Thread #x's call to pthread_mutex_trylock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:116)
-
-Thread #x's call to pthread_mutex_timedlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:121)
-
-Thread #x unlocked an invalid lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:125)
-
-
----------------- pthread_cond_wait et al ----------------
-
-Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:147)
-
-Thread #x's call to pthread_cond_wait failed
- with error code 1 (EPERM: Operation not permitted)
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:147)
-
-
-FIXME: can't figure out how to verify wrap of pthread_cond_signal
-
-
-FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
-
-Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:165)
-
-Thread #x's call to pthread_cond_timedwait failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:165)
-
-
----------------- pthread_rwlock_* ----------------
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:179)
- Lock at 0x........ was first observed
- at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:178)
-
-(1) no error on next line
-(2) no error on next line
-(3) ERROR on next line
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:196)
- Lock at 0x........ was first observed
- at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:186)
-
-(4) no error on next line
-(5) no error on next line
-(6) no error on next line
-(7) no error on next line
-(8) ERROR on next line
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:212)
- Lock at 0x........ was first observed
- at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:186)
-
-
----------------- sem_* ----------------
-
-Thread #x's call to sem_init failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: sem_init@* (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:228)
-
-
-FIXME: can't figure out how to verify wrap of sem_destroy
-
-Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post
- at 0x........: sem_wait_WRK (hg_intercepts.c:...)
- by 0x........: sem_wait (hg_intercepts.c:...)
- by 0x........: main (tc20_verifywrap.c:242)
-
-
-FIXME: can't figure out how to verify wrap of sem_post
-
-
------------- dealloc of mem holding locks ------------
-
-Thread #x: Exiting thread still holds 1 lock
- ...
-
-
-ERROR SUMMARY: 20 errors from 20 contexts (suppressed: 0 from 0)
---------------- pthread_create/join ----------------
+---Thread-Announcement------------------------------------------
+
Thread #x is the program's root thread
+---Thread-Announcement------------------------------------------
+
Thread #x was created
...
by 0x........: pthread_create@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:76)
+----------------------------------------------------------------
+
Possible data race during write of size 2 at 0x........ by thread #x
+Locks held: none
at 0x........: main (tc20_verifywrap.c:78)
- This conflicts with a previous write of size 2 by thread #x
+
+This conflicts with a previous write of size 2 by thread #x
+Locks held: none
at 0x........: racy_child (tc20_verifywrap.c:34)
by 0x........: mythread_wrapper (hg_intercepts.c:...)
...
- Location 0x........ is 0 bytes inside global var "unprotected"
- declared at tc20_verifywrap.c:27
+
+Location 0x........ is 0 bytes inside global var "unprotected"
+declared at tc20_verifywrap.c:27
+
+----------------------------------------------------------------
Thread #x's call to pthread_join failed
with error code 35 (EDEADLK: Resource deadlock would occur)
---------------- pthread_mutex_lock et al ----------------
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_init failed
with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:92)
+----------------------------------------------------------------
+
Thread #x: pthread_mutex_destroy of a locked mutex
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_destroy failed
with error code 16 (EBUSY: Device or resource busy)
at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:102)
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_lock failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:108)
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_trylock failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_mutex_trylock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:116)
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_timedlock failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:121)
+----------------------------------------------------------------
+
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
+----------------------------------------------------------------
+
Thread #x's call to pthread_mutex_unlock failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
---------------- pthread_cond_wait et al ----------------
+----------------------------------------------------------------
+
Thread #x: pthread_cond_{timed}wait called with un-held mutex
at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
+----------------------------------------------------------------
+
Thread #x's call to pthread_cond_wait failed
with error code 1 (EPERM: Operation not permitted)
at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...)
by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:147)
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
+ at 0x........: pthread_cond_signal@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:152)
+
FIXME: can't figure out how to verify wrap of pthread_cond_signal
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
+ at 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:158)
+
FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
+----------------------------------------------------------------
+
Thread #x: pthread_cond_{timed}wait called with un-held mutex
at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:165)
+----------------------------------------------------------------
+
Thread #x's call to pthread_cond_timedwait failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
---------------- pthread_rwlock_* ----------------
+----------------------------------------------------------------
+
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:179)
(1) no error on next line
(2) no error on next line
(3) ERROR on next line
+----------------------------------------------------------------
+
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:196)
(6) no error on next line
(7) no error on next line
(8) ERROR on next line
+----------------------------------------------------------------
+
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:212)
---------------- sem_* ----------------
+----------------------------------------------------------------
+
Thread #x's call to sem_init failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: sem_init@* (hg_intercepts.c:...)
FIXME: can't figure out how to verify wrap of sem_destroy
+----------------------------------------------------------------
+
Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post
at 0x........: sem_wait_WRK (hg_intercepts.c:...)
by 0x........: sem_wait (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:242)
+----------------------------------------------------------------
+
Thread #x's call to sem_post failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: sem_post_WRK (hg_intercepts.c:...)
------------ dealloc of mem holding locks ------------
+----------------------------------------------------------------
+
Thread #x: Exiting thread still holds 1 lock
...
-ERROR SUMMARY: 21 errors from 21 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0)