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 45 (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 mutex_init failed 47 with error code 22 (EINVAL: Invalid argument) 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_lock failed 61 with error code 1 (EPERM: Operation not permitted) 62 at 0x........: mutex_lock_WRK (hg_intercepts.c:...) 63 by 0x........: pthread_mutex_lock (hg_intercepts.c:...) 64 by 0x........: main (tc20_verifywrap.c:123) 65 66---------------------------------------------------------------- 67 68Thread #x's call to pthread_mutex_trylock failed 69 with error code 1 (EPERM: Operation not permitted) 70 at 0x........: mutex_trylock_WRK (hg_intercepts.c:...) 71 by 0x........: pthread_mutex_trylock (hg_intercepts.c:...) 72 by 0x........: main (tc20_verifywrap.c:131) 73 74---------------------------------------------------------------- 75 76Thread #x's call to pthread_mutex_timedlock failed 77 with error code 1 (EPERM: Operation not permitted) 78 at 0x........: mutex_timedlock_WRK (hg_intercepts.c:...) 79 by 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) 80 by 0x........: main (tc20_verifywrap.c:136) 81 82---------------------------------------------------------------- 83 84Thread #x unlocked an invalid lock at 0x........ 85 at 0x........: mutex_unlock_WRK (hg_intercepts.c:...) 86 by 0x........: pthread_mutex_unlock (hg_intercepts.c:...) 87 by 0x........: main (tc20_verifywrap.c:140) 88 89---------------------------------------------------------------- 90 91Thread #x's call to pthread_mutex_unlock failed 92 with error code 1 (EPERM: Operation not permitted) 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---------------- pthread_cond_wait et al ---------------- 99 100---------------------------------------------------------------- 101 102Thread #x: pthread_cond_{timed}wait called with un-held mutex 103 at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) 104 by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) 105 by 0x........: main (tc20_verifywrap.c:162) 106 107---------------------------------------------------------------- 108 109Thread #x's call to pthread_cond_wait failed 110 with error code 1 (EPERM: Operation not permitted) 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: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread 118 at 0x........: pthread_cond_signal_WRK (hg_intercepts.c:...) 119 by 0x........: pthread_cond_signal@* (hg_intercepts.c:...) 120 by 0x........: main (tc20_verifywrap.c:167) 121 122 123FIXME: can't figure out how to verify wrap of pthread_cond_signal 124 125---------------------------------------------------------------- 126 127Thread #x: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread 128 at 0x........: pthread_cond_broadcast_WRK (hg_intercepts.c:...) 129 by 0x........: pthread_cond_broadcast@* (hg_intercepts.c:...) 130 by 0x........: main (tc20_verifywrap.c:173) 131 132 133FIXME: can't figure out how to verify wrap of pthread_broadcast_signal 134 135---------------------------------------------------------------- 136 137Thread #x: pthread_cond_{timed}wait called with un-held mutex 138 at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) 139 by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) 140 by 0x........: main (tc20_verifywrap.c:180) 141 142---------------------------------------------------------------- 143 144Thread #x's call to pthread_cond_timedwait failed 145 with error code 1 (EPERM: Operation not permitted) 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---------------- pthread_rwlock_* ---------------- 152 153---------------------------------------------------------------- 154 155Thread #x unlocked a not-locked lock at 0x........ 156 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 157 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 158 ... 159 by 0x........: main (tc20_verifywrap.c:194) 160 Lock at 0x........ was first observed 161 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 162 ... 163 by 0x........: main (tc20_verifywrap.c:193) 164 Location 0x........ is 0 bytes inside rwl.__pthread_rwlock_readers, 165 declared at tc20_verifywrap.c:57, in frame #x of thread x 166 167 168---------------------------------------------------------------- 169 170Thread #x's call to pthread_rwlock_unlock failed 171 with error code 1 (EPERM: Operation not permitted) 172 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 173 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 174 ... 175 by 0x........: main (tc20_verifywrap.c:194) 176 177(1) no error on next line 178(2) no error on next line 179(3) ERROR on next line 180---------------------------------------------------------------- 181 182Thread #x unlocked a not-locked lock at 0x........ 183 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 184 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 185 ... 186 by 0x........: main (tc20_verifywrap.c:211) 187 Lock at 0x........ was first observed 188 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 189 ... 190 by 0x........: main (tc20_verifywrap.c:201) 191 Location 0x........ is 0 bytes inside rwl2.__pthread_rwlock_readers, 192 declared at tc20_verifywrap.c:58, in frame #x of thread x 193 194 195---------------------------------------------------------------- 196 197Thread #x's call to pthread_rwlock_unlock failed 198 with error code 1 (EPERM: Operation not permitted) 199 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 200 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 201 ... 202 by 0x........: main (tc20_verifywrap.c:211) 203 204(4) no error on next line 205(5) no error on next line 206(6) no error on next line 207(7) no error on next line 208(8) ERROR on next line 209---------------------------------------------------------------- 210 211Thread #x unlocked a not-locked lock at 0x........ 212 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 213 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 214 ... 215 by 0x........: main (tc20_verifywrap.c:232) 216 Lock at 0x........ was first observed 217 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 218 ... 219 by 0x........: main (tc20_verifywrap.c:201) 220 Location 0x........ is 0 bytes inside rwl2.__pthread_rwlock_readers, 221 declared at tc20_verifywrap.c:58, in frame #x of thread x 222 223 224---------------------------------------------------------------- 225 226Thread #x's call to pthread_rwlock_unlock failed 227 with error code 1 (EPERM: Operation not permitted) 228 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 229 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 230 ... 231 by 0x........: main (tc20_verifywrap.c:232) 232 233 234---------------- pthread_spin_* ---------------- 235 236 237---------------- sem_* ---------------- 238 239---------------------------------------------------------------- 240 241Thread #x's call to sema_init failed 242 with error code 22 (EINVAL: Invalid argument) 243 at 0x........: sema_init (hg_intercepts.c:...) 244 ... 245 by 0x........: main (tc20_verifywrap.c:267) 246 247 248FIXME: can't figure out how to verify wrap of sem_destroy 249 250 251FIXME: can't figure out how to verify wrap of sem_post 252 253 254------------ dealloc of mem holding locks ------------ 255 256---------------------------------------------------------------- 257 258Thread #x: Exiting thread still holds 1 lock 259 ... 260 261 262ERROR SUMMARY: 23 errors from 23 contexts (suppressed: 0 from 0) 263