1 2 3 4 ------ This is output for >= glibc 2.4 ------ 5 6 ---------------- pthread_create/join ---------------- 7 8 Thread #x is the program's root thread 9 10 Thread #x was created 11 ... 12 by 0x........: pthread_create@* (hg_intercepts.c:...) 13 by 0x........: main (tc20_verifywrap.c:76) 14 15 Possible data race during write of size 2 at 0x........ by thread #x 16 at 0x........: main (tc20_verifywrap.c:78) 17 This conflicts with a previous write of size 2 by thread #x 18 at 0x........: racy_child (tc20_verifywrap.c:34) 19 by 0x........: mythread_wrapper (hg_intercepts.c:...) 20 ... 21 Location 0x........ is 0 bytes inside global var "unprotected" 22 declared at tc20_verifywrap.c:27 23 24 Thread #x's call to pthread_join failed 25 with error code 35 (EDEADLK: Resource deadlock would occur) 26 at 0x........: pthread_join (hg_intercepts.c:...) 27 by 0x........: main (tc20_verifywrap.c:83) 28 29 30 ---------------- pthread_mutex_lock et al ---------------- 31 32 Thread #x's call to pthread_mutex_init failed 33 with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint) 34 at 0x........: pthread_mutex_init (hg_intercepts.c:...) 35 by 0x........: main (tc20_verifywrap.c:92) 36 37 Thread #x: pthread_mutex_destroy of a locked mutex 38 at 0x........: pthread_mutex_destroy (hg_intercepts.c:...) 39 by 0x........: main (tc20_verifywrap.c:102) 40 41 Thread #x's call to pthread_mutex_destroy failed 42 with error code 16 (EBUSY: Device or resource busy) 43 at 0x........: pthread_mutex_destroy (hg_intercepts.c:...) 44 by 0x........: main (tc20_verifywrap.c:102) 45 46 Thread #x's call to pthread_mutex_lock failed 47 with error code 22 (EINVAL: Invalid argument) 48 at 0x........: pthread_mutex_lock (hg_intercepts.c:...) 49 by 0x........: main (tc20_verifywrap.c:108) 50 51 Thread #x's call to pthread_mutex_trylock failed 52 with error code 22 (EINVAL: Invalid argument) 53 at 0x........: pthread_mutex_trylock (hg_intercepts.c:...) 54 by 0x........: main (tc20_verifywrap.c:116) 55 56 Thread #x's call to pthread_mutex_timedlock failed 57 with error code 22 (EINVAL: Invalid argument) 58 at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) 59 by 0x........: main (tc20_verifywrap.c:121) 60 61 Thread #x unlocked an invalid lock at 0x........ 62 at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) 63 by 0x........: main (tc20_verifywrap.c:125) 64 65 Thread #x's call to pthread_mutex_unlock failed 66 with error code 22 (EINVAL: Invalid argument) 67 at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) 68 by 0x........: main (tc20_verifywrap.c:125) 69 70 71 ---------------- pthread_cond_wait et al ---------------- 72 73 Thread #x: pthread_cond_{timed}wait called with un-held mutex 74 at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) 75 by 0x........: main (tc20_verifywrap.c:147) 76 77 Thread #x's call to pthread_cond_wait failed 78 with error code 1 (EPERM: Operation not permitted) 79 at 0x........: pthread_cond_wait@* (hg_intercepts.c:...) 80 by 0x........: main (tc20_verifywrap.c:147) 81 82 83 FIXME: can't figure out how to verify wrap of pthread_cond_signal 84 85 86 FIXME: can't figure out how to verify wrap of pthread_broadcast_signal 87 88 Thread #x: pthread_cond_{timed}wait called with un-held mutex 89 at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) 90 by 0x........: main (tc20_verifywrap.c:165) 91 92 Thread #x's call to pthread_cond_timedwait failed 93 with error code 22 (EINVAL: Invalid argument) 94 at 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) 95 by 0x........: main (tc20_verifywrap.c:165) 96 97 98 ---------------- pthread_rwlock_* ---------------- 99 100 Thread #x unlocked a not-locked lock at 0x........ 101 at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 102 by 0x........: main (tc20_verifywrap.c:179) 103 Lock at 0x........ was first observed 104 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 105 by 0x........: main (tc20_verifywrap.c:178) 106 107 (1) no error on next line 108 (2) no error on next line 109 (3) ERROR on next line 110 Thread #x unlocked a not-locked lock at 0x........ 111 at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 112 by 0x........: main (tc20_verifywrap.c:196) 113 Lock at 0x........ was first observed 114 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 115 by 0x........: main (tc20_verifywrap.c:186) 116 117 (4) no error on next line 118 (5) no error on next line 119 (6) no error on next line 120 (7) no error on next line 121 (8) ERROR on next line 122 Thread #x unlocked a not-locked lock at 0x........ 123 at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 124 by 0x........: main (tc20_verifywrap.c:212) 125 Lock at 0x........ was first observed 126 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 127 by 0x........: main (tc20_verifywrap.c:186) 128 129 130 ---------------- sem_* ---------------- 131 132 Thread #x's call to sem_init failed 133 with error code 22 (EINVAL: Invalid argument) 134 at 0x........: sem_init@* (hg_intercepts.c:...) 135 by 0x........: main (tc20_verifywrap.c:228) 136 137 138 FIXME: can't figure out how to verify wrap of sem_destroy 139 140 Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post 141 at 0x........: sem_wait_WRK (hg_intercepts.c:...) 142 by 0x........: sem_wait (hg_intercepts.c:...) 143 by 0x........: main (tc20_verifywrap.c:242) 144 145 146 FIXME: can't figure out how to verify wrap of sem_post 147 148 149 ------------ dealloc of mem holding locks ------------ 150 151 Thread #x: Exiting thread still holds 1 lock 152 ... 153 154 155 ERROR SUMMARY: 20 errors from 20 contexts (suppressed: 0 from 0) 156