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   Uninitialised byte(s) false alarm, see bpo-35561
268   Memcheck:Param
269   epoll_ctl(event)
270   fun:epoll_ctl
271   fun:pyepoll_internal_ctl
272}
273
274{
275   ZLIB problems, see test_gzip
276   Memcheck:Cond
277   obj:/lib/libz.so.1.2.3
278   obj:/lib/libz.so.1.2.3
279   fun:deflate
280}
281
282{
283   Avoid problems w/readline doing a putenv and leaking on exit
284   Memcheck:Leak
285   fun:malloc
286   fun:xmalloc
287   fun:sh_set_lines_and_columns
288   fun:_rl_get_screen_size
289   fun:_rl_init_terminal_io
290   obj:/lib/libreadline.so.4.3
291   fun:rl_initialize
292}
293
294# Valgrind emits "Conditional jump or move depends on uninitialised value(s)"
295# false alarms on GCC builtin strcmp() function. The GCC code is correct.
296#
297# Valgrind bug: https://bugs.kde.org/show_bug.cgi?id=264936
298{
299   bpo-38118: Valgrind emits false alarm on GCC builtin strcmp()
300   Memcheck:Cond
301   fun:PyUnicode_Decode
302}
303
304
305###
306### These occur from somewhere within the SSL, when running
307###  test_socket_sll.  They are too general to leave on by default.
308###
309###{
310###   somewhere in SSL stuff
311###   Memcheck:Cond
312###   fun:memset
313###}
314###{
315###   somewhere in SSL stuff
316###   Memcheck:Value4
317###   fun:memset
318###}
319###
320###{
321###   somewhere in SSL stuff
322###   Memcheck:Cond
323###   fun:MD5_Update
324###}
325###
326###{
327###   somewhere in SSL stuff
328###   Memcheck:Value4
329###   fun:MD5_Update
330###}
331
332# Fedora's package "openssl-1.0.1-0.1.beta2.fc17.x86_64" on x86_64
333# See http://bugs.python.org/issue14171
334{
335   openssl 1.0.1 prng 1
336   Memcheck:Cond
337   fun:bcmp
338   fun:fips_get_entropy
339   fun:FIPS_drbg_instantiate
340   fun:RAND_init_fips
341   fun:OPENSSL_init_library
342   fun:SSL_library_init
343   fun:init_hashlib
344}
345
346{
347   openssl 1.0.1 prng 2
348   Memcheck:Cond
349   fun:fips_get_entropy
350   fun:FIPS_drbg_instantiate
351   fun:RAND_init_fips
352   fun:OPENSSL_init_library
353   fun:SSL_library_init
354   fun:init_hashlib
355}
356
357{
358   openssl 1.0.1 prng 3
359   Memcheck:Value8
360   fun:_x86_64_AES_encrypt_compact
361   fun:AES_encrypt
362}
363
364#
365# All of these problems come from using test_socket_ssl
366#
367{
368   from test_socket_ssl
369   Memcheck:Cond
370   fun:BN_bin2bn
371}
372
373{
374   from test_socket_ssl
375   Memcheck:Cond
376   fun:BN_num_bits_word
377}
378
379{
380   from test_socket_ssl
381   Memcheck:Value4
382   fun:BN_num_bits_word
383}
384
385{
386   from test_socket_ssl
387   Memcheck:Cond
388   fun:BN_mod_exp_mont_word
389}
390
391{
392   from test_socket_ssl
393   Memcheck:Cond
394   fun:BN_mod_exp_mont
395}
396
397{
398   from test_socket_ssl
399   Memcheck:Param
400   write(buf)
401   fun:write
402   obj:/usr/lib/libcrypto.so.0.9.7
403}
404
405{
406   from test_socket_ssl
407   Memcheck:Cond
408   fun:RSA_verify
409}
410
411{
412   from test_socket_ssl
413   Memcheck:Value4
414   fun:RSA_verify
415}
416
417{
418   from test_socket_ssl
419   Memcheck:Value4
420   fun:DES_set_key_unchecked
421}
422
423{
424   from test_socket_ssl
425   Memcheck:Value4
426   fun:DES_encrypt2
427}
428
429{
430   from test_socket_ssl
431   Memcheck:Cond
432   obj:/usr/lib/libssl.so.0.9.7
433}
434
435{
436   from test_socket_ssl
437   Memcheck:Value4
438   obj:/usr/lib/libssl.so.0.9.7
439}
440
441{
442   from test_socket_ssl
443   Memcheck:Cond
444   fun:BUF_MEM_grow_clean
445}
446
447{
448   from test_socket_ssl
449   Memcheck:Cond
450   fun:memcpy
451   fun:ssl3_read_bytes
452}
453
454{
455   from test_socket_ssl
456   Memcheck:Cond
457   fun:SHA1_Update
458}
459
460{
461   from test_socket_ssl
462   Memcheck:Value4
463   fun:SHA1_Update
464}
465
466{
467   test_buffer_non_debug
468   Memcheck:Addr4
469   fun:PyUnicodeUCS2_FSConverter
470}
471
472{
473   test_buffer_non_debug
474   Memcheck:Addr4
475   fun:PyUnicode_FSConverter
476}
477
478{
479   wcscmp_false_positive
480   Memcheck:Addr8
481   fun:wcscmp
482   fun:_PyOS_GetOpt
483   fun:Py_Main
484   fun:main
485}
486
487# Additional suppressions for the unified decimal tests:
488{
489   test_decimal
490   Memcheck:Addr4
491   fun:PyUnicodeUCS2_FSConverter
492}
493
494{
495   test_decimal2
496   Memcheck:Addr4
497   fun:PyUnicode_FSConverter
498}
499
500