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