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