1 2 3 4 ------ This is output for >= glibc 2.4 ------ 5 6 ---------------- pthread_create/join ---------------- 7 8 Thread #x is the program's root thread 9 10 Thread #x was created 11 ... 12 by 0x........: pthread_create@* (hg_intercepts.c:...) 13 by 0x........: main (tc20_verifywrap.c:76) 14 15 Possible data race during write of size 2 at 0x........ by thread #x 16 at 0x........: main (tc20_verifywrap.c:78) 17 This conflicts with a previous write of size 2 by thread #x 18 at 0x........: racy_child (tc20_verifywrap.c:34) 19 by 0x........: mythread_wrapper (hg_intercepts.c:...) 20 ... 21 Location 0x........ is 0 bytes inside global var "unprotected" 22 declared at tc20_verifywrap.c:27 23 24 Thread #x's call to pthread_join failed 25 with error code 35 (EDEADLK: Resource deadlock would occur) 26 at 0x........: pthread_join (hg_intercepts.c:...) 27 by 0x........: main (tc20_verifywrap.c:83) 28 29 30 ---------------- pthread_mutex_lock et al ---------------- 31 32 Thread #x's call to pthread_mutex_init failed 33 with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint) 34 at 0x........: pthread_mutex_init (hg_intercepts.c:...) 35 by 0x........: main (tc20_verifywrap.c:92) 36 37 Thread #x: pthread_mutex_destroy of a locked mutex 38 at 0x........: pthread_mutex_destroy (hg_intercepts.c:...) 39 by 0x........: main (tc20_verifywrap.c:102) 40 41 Thread #x's call to pthread_mutex_destroy failed 42 with error code 16 (EBUSY: Device or resource busy) 43 at 0x........: pthread_mutex_destroy (hg_intercepts.c:...) 44 by 0x........: main (tc20_verifywrap.c:102) 45 46 Thread #x's call to pthread_mutex_lock failed 47 with error code 22 (EINVAL: Invalid argument) 48 at 0x........: pthread_mutex_lock (hg_intercepts.c:...) 49 by 0x........: main (tc20_verifywrap.c:108) 50 51 Thread #x's call to pthread_mutex_trylock failed 52 with error code 22 (EINVAL: Invalid argument) 53 at 0x........: pthread_mutex_trylock (hg_intercepts.c:...) 54 by 0x........: main (tc20_verifywrap.c:116) 55 56 Thread #x's call to pthread_mutex_timedlock failed 57 with error code 22 (EINVAL: Invalid argument) 58 at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...) 59 by 0x........: main (tc20_verifywrap.c:121) 60 61 Thread #x unlocked an invalid lock at 0x........ 62 at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) 63 by 0x........: main (tc20_verifywrap.c:125) 64 65 Thread #x's call to pthread_mutex_unlock failed 66 with error code 22 (EINVAL: Invalid argument) 67 at 0x........: pthread_mutex_unlock (hg_intercepts.c:...) 68 by 0x........: main (tc20_verifywrap.c:125) 69 70 71 ---------------- pthread_cond_wait et al ---------------- 72 73 Thread #x: pthread_cond_{timed}wait called with un-held mutex 74 at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) 75 by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) 76 by 0x........: main (tc20_verifywrap.c:147) 77 78 Thread #x's call to pthread_cond_wait failed 79 with error code 1 (EPERM: Operation not permitted) 80 at 0x........: pthread_cond_wait_WRK (hg_intercepts.c:...) 81 by 0x........: pthread_cond_wait@* (hg_intercepts.c:...) 82 by 0x........: main (tc20_verifywrap.c:147) 83 84 85 FIXME: can't figure out how to verify wrap of pthread_cond_signal 86 87 88 FIXME: can't figure out how to verify wrap of pthread_broadcast_signal 89 90 Thread #x: pthread_cond_{timed}wait called with un-held mutex 91 at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) 92 by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) 93 by 0x........: main (tc20_verifywrap.c:165) 94 95 Thread #x's call to pthread_cond_timedwait failed 96 with error code 22 (EINVAL: Invalid argument) 97 at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...) 98 by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...) 99 by 0x........: main (tc20_verifywrap.c:165) 100 101 102 ---------------- pthread_rwlock_* ---------------- 103 104 Thread #x unlocked a not-locked lock at 0x........ 105 at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 106 by 0x........: main (tc20_verifywrap.c:179) 107 Lock at 0x........ was first observed 108 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 109 by 0x........: main (tc20_verifywrap.c:178) 110 111 (1) no error on next line 112 (2) no error on next line 113 (3) ERROR on next line 114 Thread #x unlocked a not-locked lock at 0x........ 115 at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 116 by 0x........: main (tc20_verifywrap.c:196) 117 Lock at 0x........ was first observed 118 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 119 by 0x........: main (tc20_verifywrap.c:186) 120 121 (4) no error on next line 122 (5) no error on next line 123 (6) no error on next line 124 (7) no error on next line 125 (8) ERROR on next line 126 Thread #x unlocked a not-locked lock at 0x........ 127 at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...) 128 by 0x........: main (tc20_verifywrap.c:212) 129 Lock at 0x........ was first observed 130 at 0x........: pthread_rwlock_init (hg_intercepts.c:...) 131 by 0x........: main (tc20_verifywrap.c:186) 132 133 134 ---------------- sem_* ---------------- 135 136 Thread #x's call to sem_init failed 137 with error code 22 (EINVAL: Invalid argument) 138 at 0x........: sem_init@* (hg_intercepts.c:...) 139 by 0x........: main (tc20_verifywrap.c:228) 140 141 142 FIXME: can't figure out how to verify wrap of sem_destroy 143 144 Thread #x: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post 145 at 0x........: sem_wait_WRK (hg_intercepts.c:...) 146 by 0x........: sem_wait (hg_intercepts.c:...) 147 by 0x........: main (tc20_verifywrap.c:242) 148 149 Thread #x's call to sem_post failed 150 with error code 22 (EINVAL: Invalid argument) 151 at 0x........: sem_post_WRK (hg_intercepts.c:...) 152 by 0x........: sem_post (hg_intercepts.c:...) 153 by 0x........: main (tc20_verifywrap.c:245) 154 155 156 FIXME: can't figure out how to verify wrap of sem_post 157 158 159 ------------ dealloc of mem holding locks ------------ 160 161 Thread #x: Exiting thread still holds 1 lock 162 ... 163 164 165 ERROR SUMMARY: 21 errors from 21 contexts (suppressed: 0 from 0) 166