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 pthread_mutex_init failed
47   with error code 122 (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 89 (ENOSYS: Function not implemented)
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