1 2 3 4 ------ This is output for >= glibc 2.4 ------ 5 6 ---------------- pthread_create/join ---------------- 7 8 ---Thread-Announcement------------------------------------------ 9 10 Thread #x is the program's root thread 11 12 ---Thread-Announcement------------------------------------------ 13 14 Thread #x was created 15 ... 16 by 0x........: pthread_create@* (hg_intercepts.c:...) 17 by 0x........: main (tc20_verifywrap.c:81) 18 19 ---------------------------------------------------------------- 20 21 Possible data race during write of size 2 at 0x........ by thread #x 22 Locks held: none 23 at 0x........: main (tc20_verifywrap.c:83) 24 25 This conflicts with a previous write of size 2 by thread #x 26 Locks held: none 27 at 0x........: racy_child (tc20_verifywrap.c:39) 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:32 32 33 ---------------------------------------------------------------- 34 35 Thread #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:88) 40 41 42 ---------------- pthread_mutex_lock et al ---------------- 43 44 ---------------------------------------------------------------- 45 46 Thread #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:102) 50 51 ---------------------------------------------------------------- 52 53 Thread #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:112) 57 58 ---------------------------------------------------------------- 59 60 Thread #x's call to pthread_mutex_lock failed 61 with error code 22 (EINVAL: Invalid argument) 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:118) 65 66 ---------------------------------------------------------------- 67 68 Thread #x's call to pthread_mutex_trylock failed 69 with error code 22 (EINVAL: Invalid argument) 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:126) 73 74 ---------------------------------------------------------------- 75 76 Thread #x's call to pthread_mutex_timedlock failed 77 with error code 22 (EINVAL: Invalid argument) 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:131) 81 82 ---------------------------------------------------------------- 83 84 Thread #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:135) 88 89 ---------------------------------------------------------------- 90 91 Thread #x's call to pthread_mutex_unlock failed 92 with error code 22 (EINVAL: Invalid argument) 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:135) 96 97 98 ---------------- pthread_cond_wait et al ---------------- 99 100 ---------------------------------------------------------------- 101 102 Thread #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:157) 106 107 ---------------------------------------------------------------- 108 109 Thread #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:157) 114 115 ---------------------------------------------------------------- 116 117 Thread #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:162) 121 122 123 FIXME: can't figure out how to verify wrap of pthread_cond_signal 124 125 ---------------------------------------------------------------- 126 127 Thread #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:168) 131 132 133 FIXME: can't figure out how to verify wrap of pthread_broadcast_signal 134 135 ---------------------------------------------------------------- 136 137 Thread #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:175) 141 142 ---------------------------------------------------------------- 143 144 Thread #x's call to pthread_cond_timedwait failed 145 with error code 22 (EINVAL: Invalid argument) 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:175) 149 150 151 ---------------- pthread_rwlock_* ---------------- 152 153 ---------------------------------------------------------------- 154 155 Thread #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:189) 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:188) 164 165 (1) no error on next line 166 (2) no error on next line 167 (3) ERROR on next line 168 ---------------------------------------------------------------- 169 170 Thread #x unlocked a not-locked lock at 0x........ 171 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 172 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 173 ... 174 by 0x........: main (tc20_verifywrap.c:206) 175 Lock at 0x........ was first observed 176 at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) 177 by 0x........: pthread_rwlock_init (hg_intercepts.c:...) 178 by 0x........: main (tc20_verifywrap.c:196) 179 180 (4) no error on next line 181 (5) no error on next line 182 (6) no error on next line 183 (7) no error on next line 184 (8) ERROR on next line 185 ---------------------------------------------------------------- 186 187 Thread #x unlocked a not-locked lock at 0x........ 188 at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...) 189 by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 190 by 0x........: main (tc20_verifywrap.c:227) 191 Lock at 0x........ was first observed 192 at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...) 193 by 0x........: pthread_rwlock_init (hg_intercepts.c:...) 194 by 0x........: main (tc20_verifywrap.c:196) 195 196 197 ---------------- sem_* ---------------- 198 199 ---------------------------------------------------------------- 200 201 Thread #x's call to sem_init failed 202 with error code 22 (EINVAL: Invalid argument) 203 at 0x........: sem_init_WRK (hg_intercepts.c:...) 204 by 0x........: sem_init@* (hg_intercepts.c:...) 205 by 0x........: main (tc20_verifywrap.c:243) 206 207 208 FIXME: can't figure out how to verify wrap of sem_destroy 209 210 ---------------------------------------------------------------- 211 212 Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post 213 at 0x........: sem_wait_WRK (hg_intercepts.c:...) 214 by 0x........: sem_wait (hg_intercepts.c:...) 215 by 0x........: main (tc20_verifywrap.c:257) 216 217 ---------------------------------------------------------------- 218 219 Thread #x's call to sem_post failed 220 with error code 22 (EINVAL: Invalid argument) 221 at 0x........: sem_post_WRK (hg_intercepts.c:...) 222 by 0x........: sem_post (hg_intercepts.c:...) 223 by 0x........: main (tc20_verifywrap.c:260) 224 225 226 FIXME: can't figure out how to verify wrap of sem_post 227 228 229 ------------ dealloc of mem holding locks ------------ 230 231 ---------------------------------------------------------------- 232 233 Thread #x: Exiting thread still holds 1 lock 234 ... 235 236 237 ERROR SUMMARY: 22 errors from 22 contexts (suppressed: 0 from 0) 238