| |
| |
| |
| ------ This is output for >= glibc 2.4 ------ |
| |
| ---------------- 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:86) |
| |
| ---------------------------------------------------------------- |
| |
| Possible data race during write of size 2 at 0x........ by thread #x |
| Locks held: none |
| at 0x........: main (tc20_verifywrap.c:88) |
| |
| This conflicts with a previous write of size 2 by thread #x |
| Locks held: none |
| at 0x........: racy_child (tc20_verifywrap.c:44) |
| by 0x........: mythread_wrapper (hg_intercepts.c:...) |
| ... |
| Location 0x........ is 0 bytes inside global var "unprotected" |
| declared at tc20_verifywrap.c:37 |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to pthread_join failed |
| with error code 35 (EDEADLK: Resource deadlock would occur) |
| at 0x........: pthread_join_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_join (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:93) |
| |
| |
| ---------------- 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:107) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x: pthread_mutex_destroy of a locked mutex |
| at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:117) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to pthread_mutex_destroy failed |
| with error code 16 (EBUSY: Device or resource busy) |
| at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:117) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to pthread_mutex_lock failed |
| with error code 22 (EINVAL: Invalid argument) |
| at 0x........: mutex_lock_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_mutex_lock (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:123) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to pthread_mutex_trylock failed |
| with error code 22 (EINVAL: Invalid argument) |
| at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:131) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to pthread_mutex_timedlock failed |
| with error code 22 (EINVAL: Invalid argument) |
| at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:136) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x unlocked an invalid lock at 0x........ |
| at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:140) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to pthread_mutex_unlock failed |
| with error code 22 (EINVAL: Invalid argument) |
| at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:140) |
| |
| |
| ---------------- 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:162) |
| |
| ---------------------------------------------------------------- |
| |
| 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:162) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread |
| at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:167) |
| |
| |
| 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_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:173) |
| |
| |
| 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:180) |
| |
| ---------------------------------------------------------------- |
| |
| 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:...) |
| by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:180) |
| |
| |
| ---------------- pthread_rwlock_* ---------------- |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x unlocked a not-locked lock at 0x........ |
| at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) |
| ... |
| by 0x........: main (tc20_verifywrap.c:194) |
| Lock at 0x........ was first observed |
| at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_rwlock_init (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:193) |
| Location 0x........ is 0 bytes inside local var "rwl" |
| declared at tc20_verifywrap.c:57, in frame #x of thread x |
| |
| |
| (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_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) |
| ... |
| by 0x........: main (tc20_verifywrap.c:211) |
| Lock at 0x........ was first observed |
| at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_rwlock_init (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:201) |
| Location 0x........ is 0 bytes inside local var "rwl2" |
| declared at tc20_verifywrap.c:58, in frame #x of thread x |
| |
| |
| (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_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) |
| ... |
| by 0x........: main (tc20_verifywrap.c:232) |
| Lock at 0x........ was first observed |
| at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) |
| by 0x........: pthread_rwlock_init (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:201) |
| Location 0x........ is 0 bytes inside local var "rwl2" |
| declared at tc20_verifywrap.c:58, in frame #x of thread x |
| |
| |
| |
| ---------------- pthread_spin_* ---------------- |
| |
| |
| ---------------- sem_* ---------------- |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to sem_init failed |
| with error code 22 (EINVAL: Invalid argument) |
| at 0x........: sem_init_WRK (hg_intercepts.c:...) |
| by 0x........: sem_init@* (hg_intercepts.c:...) |
| by 0x........: main (tc20_verifywrap.c:267) |
| |
| |
| 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:281) |
| |
| ---------------------------------------------------------------- |
| |
| Thread #x's call to sem_post failed |
| with error code 22 (EINVAL: Invalid argument) |
| at 0x........: sem_post_WRK (hg_intercepts.c:...) |
| by 0x........: sem_post (hg_intercepts.c:...) |
| ... |
| by 0x........: main (tc20_verifywrap.c:284) |
| |
| |
| 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: 23 errors from 23 contexts (suppressed: 0 from 0) |