


------ This is output for < glibc 2.4 ------

---------------- pthread_create/join ----------------

Thread #1 is the program's root thread

Thread #2 was created
   at 0x........: clone (in /...libc...)
   by 0x........: ...
   by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
   by 0x........: pthread_create@* (hg_intercepts.c:...)
   by 0x........: main (tc20_verifywrap.c:76)

Possible data race during write of size 2 at 0x........
   at 0x........: main (tc20_verifywrap.c:78)
  Old state: owned exclusively by thread #2
  New state: shared-modified by threads #1, #2
  Reason:    this thread, #1, holds no locks at all

Thread #1'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 #1: pthread_mutex_destroy of a locked mutex
   at 0x........: pthread_mutex_destroy (hg_intercepts.c:...)
   by 0x........: main (tc20_verifywrap.c:102)

Thread #1'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)

make pthread_mutex_lock fail: skipped on glibc < 2.4


Thread #1 unlocked an invalid lock at 0x........ 
   at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
   by 0x........: main (tc20_verifywrap.c:125)

---------------- pthread_cond_wait et al ----------------


Thread #1: 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 #1'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 #1: 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 #1'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 #1 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 #1 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 #1 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 #1'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 #1: 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 #1 deallocated location 0x........ containing a locked lock
   at 0x........: main (tc20_verifywrap.c:262)
  Lock at 0x........ was first observed
   at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
   by 0x........: main (tc20_verifywrap.c:216)

ERROR SUMMARY: 15 errors from 15 contexts (suppressed: 0 from 0)
