1#
2# This is a valgrind suppression file that should be used when using valgrind.
3#
4#  Here's an example of running valgrind:
5#
6#	cd python/dist/src
7#	valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \
8#		./python -E -tt ./Lib/test/regrtest.py -u bsddb,network
9#
10# You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER
11# to use the preferred suppressions with Py_ADDRESS_IN_RANGE.
12#
13# If you do not want to recompile Python, you can uncomment
14# suppressions for PyObject_Free and PyObject_Realloc.
15#
16# See Misc/README.valgrind for more information.
17
18# all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif
19{
20   ADDRESS_IN_RANGE/Invalid read of size 4
21   Memcheck:Addr4
22   fun:Py_ADDRESS_IN_RANGE
23}
24
25{
26   ADDRESS_IN_RANGE/Invalid read of size 4
27   Memcheck:Value4
28   fun:Py_ADDRESS_IN_RANGE
29}
30
31{
32   ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64)
33   Memcheck:Value8
34   fun:Py_ADDRESS_IN_RANGE
35}
36
37{
38   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
39   Memcheck:Cond
40   fun:Py_ADDRESS_IN_RANGE
41}
42
43#
44# Leaks (including possible leaks)
45#    Hmmm, I wonder if this masks some real leaks.  I think it does.
46#    Will need to fix that.
47#
48
49{
50   Suppress leaking the GIL.  Happens once per process, see comment in ceval.c.
51   Memcheck:Leak
52   fun:malloc
53   fun:PyThread_allocate_lock
54   fun:PyEval_InitThreads
55}
56
57{
58   Suppress leaking the GIL after a fork.
59   Memcheck:Leak
60   fun:malloc
61   fun:PyThread_allocate_lock
62   fun:PyEval_ReInitThreads
63}
64
65{
66   Suppress leaking the autoTLSkey.  This looks like it shouldn't leak though.
67   Memcheck:Leak
68   fun:malloc
69   fun:PyThread_create_key
70   fun:_PyGILState_Init
71   fun:Py_InitializeEx
72   fun:Py_Main
73}
74
75{
76   Hmmm, is this a real leak or like the GIL?
77   Memcheck:Leak
78   fun:malloc
79   fun:PyThread_ReInitTLS
80}
81
82{
83   Handle PyMalloc confusing valgrind (possibly leaked)
84   Memcheck:Leak
85   fun:realloc
86   fun:_PyObject_GC_Resize
87   fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING
88}
89
90{
91   Handle PyMalloc confusing valgrind (possibly leaked)
92   Memcheck:Leak
93   fun:malloc
94   fun:_PyObject_GC_New
95   fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING
96}
97
98{
99   Handle PyMalloc confusing valgrind (possibly leaked)
100   Memcheck:Leak
101   fun:malloc
102   fun:_PyObject_GC_NewVar
103   fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING
104}
105
106#
107# Non-python specific leaks
108#
109
110{
111   Handle pthread issue (possibly leaked)
112   Memcheck:Leak
113   fun:calloc
114   fun:allocate_dtv
115   fun:_dl_allocate_tls_storage
116   fun:_dl_allocate_tls
117}
118
119{
120   Handle pthread issue (possibly leaked)
121   Memcheck:Leak
122   fun:memalign
123   fun:_dl_allocate_tls_storage
124   fun:_dl_allocate_tls
125}
126
127###{
128###   ADDRESS_IN_RANGE/Invalid read of size 4
129###   Memcheck:Addr4
130###   fun:PyObject_Free
131###}
132###
133###{
134###   ADDRESS_IN_RANGE/Invalid read of size 4
135###   Memcheck:Value4
136###   fun:PyObject_Free
137###}
138###
139###{
140###   ADDRESS_IN_RANGE/Use of uninitialised value of size 8
141###   Memcheck:Addr8
142###   fun:PyObject_Free
143###}
144###
145###{
146###   ADDRESS_IN_RANGE/Use of uninitialised value of size 8
147###   Memcheck:Value8
148###   fun:PyObject_Free
149###}
150###
151###{
152###   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
153###   Memcheck:Cond
154###   fun:PyObject_Free
155###}
156
157###{
158###   ADDRESS_IN_RANGE/Invalid read of size 4
159###   Memcheck:Addr4
160###   fun:PyObject_Realloc
161###}
162###
163###{
164###   ADDRESS_IN_RANGE/Invalid read of size 4
165###   Memcheck:Value4
166###   fun:PyObject_Realloc
167###}
168###
169###{
170###   ADDRESS_IN_RANGE/Use of uninitialised value of size 8
171###   Memcheck:Addr8
172###   fun:PyObject_Realloc
173###}
174###
175###{
176###   ADDRESS_IN_RANGE/Use of uninitialised value of size 8
177###   Memcheck:Value8
178###   fun:PyObject_Realloc
179###}
180###
181###{
182###   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
183###   Memcheck:Cond
184###   fun:PyObject_Realloc
185###}
186
187###
188### All the suppressions below are for errors that occur within libraries
189### that Python uses.  The problems to not appear to be related to Python's
190### use of the libraries.
191###
192
193{
194   Generic ubuntu ld problems
195   Memcheck:Addr8
196   obj:/lib/ld-2.4.so
197   obj:/lib/ld-2.4.so
198   obj:/lib/ld-2.4.so
199   obj:/lib/ld-2.4.so
200}
201
202{
203   Generic gentoo ld problems
204   Memcheck:Cond
205   obj:/lib/ld-2.3.4.so
206   obj:/lib/ld-2.3.4.so
207   obj:/lib/ld-2.3.4.so
208   obj:/lib/ld-2.3.4.so
209}
210
211{
212   DBM problems, see test_dbm
213   Memcheck:Param
214   write(buf)
215   fun:write
216   obj:/usr/lib/libdb1.so.2
217   obj:/usr/lib/libdb1.so.2
218   obj:/usr/lib/libdb1.so.2
219   obj:/usr/lib/libdb1.so.2
220   fun:dbm_close
221}
222
223{
224   DBM problems, see test_dbm
225   Memcheck:Value8
226   fun:memmove
227   obj:/usr/lib/libdb1.so.2
228   obj:/usr/lib/libdb1.so.2
229   obj:/usr/lib/libdb1.so.2
230   obj:/usr/lib/libdb1.so.2
231   fun:dbm_store
232   fun:dbm_ass_sub
233}
234
235{
236   DBM problems, see test_dbm
237   Memcheck:Cond
238   obj:/usr/lib/libdb1.so.2
239   obj:/usr/lib/libdb1.so.2
240   obj:/usr/lib/libdb1.so.2
241   fun:dbm_store
242   fun:dbm_ass_sub
243}
244
245{
246   DBM problems, see test_dbm
247   Memcheck:Cond
248   fun:memmove
249   obj:/usr/lib/libdb1.so.2
250   obj:/usr/lib/libdb1.so.2
251   obj:/usr/lib/libdb1.so.2
252   obj:/usr/lib/libdb1.so.2
253   fun:dbm_store
254   fun:dbm_ass_sub
255}
256
257{
258   GDBM problems, see test_gdbm
259   Memcheck:Param
260   write(buf)
261   fun:write
262   fun:gdbm_open
263
264}
265
266{
267   ZLIB problems, see test_gzip
268   Memcheck:Cond
269   obj:/lib/libz.so.1.2.3
270   obj:/lib/libz.so.1.2.3
271   fun:deflate
272}
273
274{
275   Avoid problems w/readline doing a putenv and leaking on exit
276   Memcheck:Leak
277   fun:malloc
278   fun:xmalloc
279   fun:sh_set_lines_and_columns
280   fun:_rl_get_screen_size
281   fun:_rl_init_terminal_io
282   obj:/lib/libreadline.so.4.3
283   fun:rl_initialize
284}
285
286###
287### These occur from somewhere within the SSL, when running
288###  test_socket_sll.  They are too general to leave on by default.
289###
290###{
291###   somewhere in SSL stuff
292###   Memcheck:Cond
293###   fun:memset
294###}
295###{
296###   somewhere in SSL stuff
297###   Memcheck:Value4
298###   fun:memset
299###}
300###
301###{
302###   somewhere in SSL stuff
303###   Memcheck:Cond
304###   fun:MD5_Update
305###}
306###
307###{
308###   somewhere in SSL stuff
309###   Memcheck:Value4
310###   fun:MD5_Update
311###}
312
313#
314# All of these problems come from using test_socket_ssl
315#
316{
317   from test_socket_ssl
318   Memcheck:Cond
319   fun:BN_bin2bn
320}
321
322{
323   from test_socket_ssl
324   Memcheck:Cond
325   fun:BN_num_bits_word
326}
327
328{
329   from test_socket_ssl
330   Memcheck:Value4
331   fun:BN_num_bits_word
332}
333
334{
335   from test_socket_ssl
336   Memcheck:Cond
337   fun:BN_mod_exp_mont_word
338}
339
340{
341   from test_socket_ssl
342   Memcheck:Cond
343   fun:BN_mod_exp_mont
344}
345
346{
347   from test_socket_ssl
348   Memcheck:Param
349   write(buf)
350   fun:write
351   obj:/usr/lib/libcrypto.so.0.9.7
352}
353
354{
355   from test_socket_ssl
356   Memcheck:Cond
357   fun:RSA_verify
358}
359
360{
361   from test_socket_ssl
362   Memcheck:Value4
363   fun:RSA_verify
364}
365
366{
367   from test_socket_ssl
368   Memcheck:Value4
369   fun:DES_set_key_unchecked
370}
371
372{
373   from test_socket_ssl
374   Memcheck:Value4
375   fun:DES_encrypt2
376}
377
378{
379   from test_socket_ssl
380   Memcheck:Cond
381   obj:/usr/lib/libssl.so.0.9.7
382}
383
384{
385   from test_socket_ssl
386   Memcheck:Value4
387   obj:/usr/lib/libssl.so.0.9.7
388}
389
390{
391   from test_socket_ssl
392   Memcheck:Cond
393   fun:BUF_MEM_grow_clean
394}
395
396{
397   from test_socket_ssl
398   Memcheck:Cond
399   fun:memcpy
400   fun:ssl3_read_bytes
401}
402
403{
404   from test_socket_ssl
405   Memcheck:Cond
406   fun:SHA1_Update
407}
408
409{
410   from test_socket_ssl
411   Memcheck:Value4
412   fun:SHA1_Update
413}
414
415
416