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