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 ./Lib/test/regrtest.py -u gui,network
9#
10# You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER
11# to use the preferred suppressions with 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:address_in_range
23}
24
25{
26   ADDRESS_IN_RANGE/Invalid read of size 4
27   Memcheck:Value4
28   fun:address_in_range
29}
30
31{
32   ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64)
33   Memcheck:Value8
34   fun:address_in_range
35}
36
37{
38   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
39   Memcheck:Cond
40   fun: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# Fedora's package "openssl-1.0.1-0.1.beta2.fc17.x86_64" on x86_64
314# See http://bugs.python.org/issue14171
315{
316   openssl 1.0.1 prng 1
317   Memcheck:Cond
318   fun:bcmp
319   fun:fips_get_entropy
320   fun:FIPS_drbg_instantiate
321   fun:RAND_init_fips
322   fun:OPENSSL_init_library
323   fun:SSL_library_init
324   fun:init_hashlib
325}
326
327{
328   openssl 1.0.1 prng 2
329   Memcheck:Cond
330   fun:fips_get_entropy
331   fun:FIPS_drbg_instantiate
332   fun:RAND_init_fips
333   fun:OPENSSL_init_library
334   fun:SSL_library_init
335   fun:init_hashlib
336}
337
338{
339   openssl 1.0.1 prng 3
340   Memcheck:Value8
341   fun:_x86_64_AES_encrypt_compact
342   fun:AES_encrypt
343}
344
345#
346# All of these problems come from using test_socket_ssl
347#
348{
349   from test_socket_ssl
350   Memcheck:Cond
351   fun:BN_bin2bn
352}
353
354{
355   from test_socket_ssl
356   Memcheck:Cond
357   fun:BN_num_bits_word
358}
359
360{
361   from test_socket_ssl
362   Memcheck:Value4
363   fun:BN_num_bits_word
364}
365
366{
367   from test_socket_ssl
368   Memcheck:Cond
369   fun:BN_mod_exp_mont_word
370}
371
372{
373   from test_socket_ssl
374   Memcheck:Cond
375   fun:BN_mod_exp_mont
376}
377
378{
379   from test_socket_ssl
380   Memcheck:Param
381   write(buf)
382   fun:write
383   obj:/usr/lib/libcrypto.so.0.9.7
384}
385
386{
387   from test_socket_ssl
388   Memcheck:Cond
389   fun:RSA_verify
390}
391
392{
393   from test_socket_ssl
394   Memcheck:Value4
395   fun:RSA_verify
396}
397
398{
399   from test_socket_ssl
400   Memcheck:Value4
401   fun:DES_set_key_unchecked
402}
403
404{
405   from test_socket_ssl
406   Memcheck:Value4
407   fun:DES_encrypt2
408}
409
410{
411   from test_socket_ssl
412   Memcheck:Cond
413   obj:/usr/lib/libssl.so.0.9.7
414}
415
416{
417   from test_socket_ssl
418   Memcheck:Value4
419   obj:/usr/lib/libssl.so.0.9.7
420}
421
422{
423   from test_socket_ssl
424   Memcheck:Cond
425   fun:BUF_MEM_grow_clean
426}
427
428{
429   from test_socket_ssl
430   Memcheck:Cond
431   fun:memcpy
432   fun:ssl3_read_bytes
433}
434
435{
436   from test_socket_ssl
437   Memcheck:Cond
438   fun:SHA1_Update
439}
440
441{
442   from test_socket_ssl
443   Memcheck:Value4
444   fun:SHA1_Update
445}
446
447{
448   test_buffer_non_debug
449   Memcheck:Addr4
450   fun:PyUnicodeUCS2_FSConverter
451}
452
453{
454   test_buffer_non_debug
455   Memcheck:Addr4
456   fun:PyUnicode_FSConverter
457}
458
459{
460   wcscmp_false_positive
461   Memcheck:Addr8
462   fun:wcscmp
463   fun:_PyOS_GetOpt
464   fun:Py_Main
465   fun:main
466}
467
468# Additional suppressions for the unified decimal tests:
469{
470   test_decimal
471   Memcheck:Addr4
472   fun:PyUnicodeUCS2_FSConverter
473}
474
475{
476   test_decimal2
477   Memcheck:Addr4
478   fun:PyUnicode_FSConverter
479}
480
481