1 2 3 4------ This is output for >= glibc 2.4 ------ 5 6---------------- pthread_create/join ---------------- 7 8---Thread-Announcement------------------------------------------ 9 10Thread #x is the program's root thread 11 12---Thread-Announcement------------------------------------------ 13 14Thread #x was created 15 ... 16 by 0x........: pthread_create_WRK (hg_intercepts.c:...) 17 by 0x........: pthread_create@* (hg_intercepts.c:...) 18 by 0x........: main (tc20_verifywrap.c:86) 19 20---------------------------------------------------------------- 21 22Possible data race during write of size 2 at 0x........ by thread #x 23Locks held: none 24 at 0x........: main (tc20_verifywrap.c:88) 25 26This conflicts with a previous write of size 2 by thread #x 27Locks held: none 28 at 0x........: racy_child (tc20_verifywrap.c:44) 29 by 0x........: mythread_wrapper (hg_intercepts.c:...) 30 ... 31 32Location 0x........ is 0 bytes inside global var "unprotected" 33declared at tc20_verifywrap.c:37 34 35---------------------------------------------------------------- 36 37Thread #x's call to pthread_join failed 38 with error code 35 (EDEADLK: Resource deadlock would occur) 39 at 0x........: pthread_join_WRK (hg_intercepts.c:...) 40 by 0x........: pthread_join (hg_intercepts.c:...) 41 by 0x........: main (tc20_verifywrap.c:93) 42 43 44---------------- pthread_mutex_lock et al ---------------- 45 46---------------------------------------------------------------- 47 48Thread #x's call to pthread_mutex_init failed 49 with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint) 50 at 0x........: pthread_mutex_init (hg_intercepts.c:...) 51 by 0x........: main (tc20_verifywrap.c:107) 52 53---------------------------------------------------------------- 54 55Thread #x: pthread_mutex_destroy of a locked mutex 56 at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) 57 by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) 58 by 0x........: main (tc20_verifywrap.c:117) 59 60---------------------------------------------------------------- 61 62Thread #x's call to pthread_mutex_destroy failed 63 with error code 16 (EBUSY: Device or resource busy) 64 at 0x........: mutex_destroy_WRK (hg_intercepts.c:...) 65 by 0x........: pthread_mutex_destroy (hg_intercepts.c:...) 66 by 0x........: main (tc20_verifywrap.c:117) 67 68---------------------------------------------------------------- 69 70Thread #x's call to pthread_mutex_lock failed 71 with error code 22 (EINVAL: Invalid argument) 72 at 0x........: mutex_lock_WRK (hg_intercepts.c:...) 73 by 0x........: pthread_mutex_lock (hg_intercepts.c:...) 74 by 0x........: main (tc20_verifywrap.c:123) 75 76---------------------------------------------------------------- 77 78Thread #x's call to pthread_mutex_trylock failed 79 with error code 22 (EINVAL: Invalid argument) 80 at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) 81 by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) 82 by 0x........: main (tc20_verifywrap.c:131) 83 84---------------------------------------------------------------- 85 86Thread #x's call to pthread_mutex_timedlock failed 87 with error code 22 (EINVAL: Invalid argument) 88 at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) 89 by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) 90 by 0x........: main (tc20_verifywrap.c:136) 91 92---------------------------------------------------------------- 93 94Thread #x unlocked an invalid lock at 0x........ 95 at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) 96 by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) 97 by 0x........: main (tc20_verifywrap.c:140) 98 99---------------------------------------------------------------- 100 101Thread #x's call to pthread_mutex_unlock failed 102 with error code 22 (EINVAL: Invalid argument) 103 at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) 104 by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) 105 by 0x........: main (tc20_verifywrap.c:140) 106 107 108---------------- pthread_cond_wait et al ---------------- 109 110---------------------------------------------------------------- 111 112Thread #x: pthread_cond_{timed}wait called with un-held mutex 113 at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) 114 by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) 115 by 0x........: main (tc20_verifywrap.c:162) 116 117---------------------------------------------------------------- 118 119Thread #x's call to pthread_cond_wait failed 120 with error code 1 (EPERM: Operation not permitted) 121 at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) 122 by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) 123 by 0x........: main (tc20_verifywrap.c:162) 124 125---------------------------------------------------------------- 126 127Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread 128 at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) 129 by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) 130 by 0x........: main (tc20_verifywrap.c:167) 131 132 133FIXME: can't figure out how to verify wrap of pthread_cond_signal 134 135---------------------------------------------------------------- 136 137Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread 138 at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...) 139 by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) 140 by 0x........: main (tc20_verifywrap.c:173) 141 142 143FIXME: can't figure out how to verify wrap of pthread_broadcast_signal 144 145---------------------------------------------------------------- 146 147Thread #x: pthread_cond_{timed}wait called with un-held mutex 148 at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) 149 by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) 150 by 0x........: main (tc20_verifywrap.c:180) 151 152---------------------------------------------------------------- 153 154Thread #x's call to pthread_cond_timedwait failed 155 with error code 22 (EINVAL: Invalid argument) 156 at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) 157 by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) 158 by 0x........: main (tc20_verifywrap.c:180) 159 160 161---------------- pthread_rwlock_* ---------------- 162 163---------------------------------------------------------------- 164 165Thread #x unlocked a not-locked lock at 0x........ 166 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 167 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 168 ... 169 by 0x........: main (tc20_verifywrap.c:194) 170 Lock at 0x........ was first observed 171 at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) 172 by 0x........: pthread_rwlock_init (hg_intercepts.c:...) 173 by 0x........: main (tc20_verifywrap.c:193) 174 175(1) no error on next line 176(2) no error on next line 177(3) ERROR on next line 178---------------------------------------------------------------- 179 180Thread #x unlocked a not-locked lock at 0x........ 181 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 182 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 183 ... 184 by 0x........: main (tc20_verifywrap.c:211) 185 Lock at 0x........ was first observed 186 at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) 187 by 0x........: pthread_rwlock_init (hg_intercepts.c:...) 188 by 0x........: main (tc20_verifywrap.c:201) 189 190(4) no error on next line 191(5) no error on next line 192(6) no error on next line 193(7) no error on next line 194(8) ERROR on next line 195---------------------------------------------------------------- 196 197Thread #x unlocked a not-locked lock at 0x........ 198 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 199 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 200 ... 201 by 0x........: main (tc20_verifywrap.c:232) 202 Lock at 0x........ was first observed 203 at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) 204 by 0x........: pthread_rwlock_init (hg_intercepts.c:...) 205 by 0x........: main (tc20_verifywrap.c:201) 206 207 208 209---------------- pthread_spin_* ---------------- 210 211 212---------------- sem_* ---------------- 213 214---------------------------------------------------------------- 215 216Thread #x's call to sem_init failed 217 with error code 22 (EINVAL: Invalid argument) 218 at 0x........: sem_init_WRK (hg_intercepts.c:...) 219 by 0x........: sem_init@* (hg_intercepts.c:...) 220 by 0x........: main (tc20_verifywrap.c:267) 221 222 223FIXME: can't figure out how to verify wrap of sem_destroy 224 225---------------------------------------------------------------- 226 227Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post 228 at 0x........: sem_wait_WRK (hg_intercepts.c:...) 229 by 0x........: sem_wait (hg_intercepts.c:...) 230 by 0x........: main (tc20_verifywrap.c:281) 231 232 233FIXME: can't figure out how to verify wrap of sem_post 234 235 236------------ dealloc of mem holding locks ------------ 237 238---------------------------------------------------------------- 239 240Thread #x: Exiting thread still holds 1 lock 241 ... 242 243 244ERROR SUMMARY: 22 errors from 22 contexts (suppressed: 0 from 0) 245