|  | # | 
|  | # This is a valgrind suppression file that should be used when using valgrind. | 
|  | # | 
|  | #  Here's an example of running valgrind: | 
|  | # | 
|  | #	cd python/dist/src | 
|  | #	valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \ | 
|  | #		./python -E -tt ./Lib/test/regrtest.py -u bsddb,network | 
|  | # | 
|  | # You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER | 
|  | # to use the preferred suppressions with Py_ADDRESS_IN_RANGE. | 
|  | # | 
|  | # If you do not want to recompile Python, you can uncomment | 
|  | # suppressions for PyObject_Free and PyObject_Realloc. | 
|  | # | 
|  | # See Misc/README.valgrind for more information. | 
|  |  | 
|  | # all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif | 
|  | { | 
|  | ADDRESS_IN_RANGE/Invalid read of size 4 | 
|  | Memcheck:Addr4 | 
|  | fun:Py_ADDRESS_IN_RANGE | 
|  | } | 
|  |  | 
|  | { | 
|  | ADDRESS_IN_RANGE/Invalid read of size 4 | 
|  | Memcheck:Value4 | 
|  | fun:Py_ADDRESS_IN_RANGE | 
|  | } | 
|  |  | 
|  | { | 
|  | ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64) | 
|  | Memcheck:Value8 | 
|  | fun:Py_ADDRESS_IN_RANGE | 
|  | } | 
|  |  | 
|  | { | 
|  | ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value | 
|  | Memcheck:Cond | 
|  | fun:Py_ADDRESS_IN_RANGE | 
|  | } | 
|  |  | 
|  | # | 
|  | # Leaks (including possible leaks) | 
|  | #    Hmmm, I wonder if this masks some real leaks.  I think it does. | 
|  | #    Will need to fix that. | 
|  | # | 
|  |  | 
|  | { | 
|  | Suppress leaking the GIL.  Happens once per process, see comment in ceval.c. | 
|  | Memcheck:Leak | 
|  | fun:malloc | 
|  | fun:PyThread_allocate_lock | 
|  | fun:PyEval_InitThreads | 
|  | } | 
|  |  | 
|  | { | 
|  | Suppress leaking the GIL after a fork. | 
|  | Memcheck:Leak | 
|  | fun:malloc | 
|  | fun:PyThread_allocate_lock | 
|  | fun:PyEval_ReInitThreads | 
|  | } | 
|  |  | 
|  | { | 
|  | Suppress leaking the autoTLSkey.  This looks like it shouldn't leak though. | 
|  | Memcheck:Leak | 
|  | fun:malloc | 
|  | fun:PyThread_create_key | 
|  | fun:_PyGILState_Init | 
|  | fun:Py_InitializeEx | 
|  | fun:Py_Main | 
|  | } | 
|  |  | 
|  | { | 
|  | Hmmm, is this a real leak or like the GIL? | 
|  | Memcheck:Leak | 
|  | fun:malloc | 
|  | fun:PyThread_ReInitTLS | 
|  | } | 
|  |  | 
|  | { | 
|  | Handle PyMalloc confusing valgrind (possibly leaked) | 
|  | Memcheck:Leak | 
|  | fun:realloc | 
|  | fun:_PyObject_GC_Resize | 
|  | fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING | 
|  | } | 
|  |  | 
|  | { | 
|  | Handle PyMalloc confusing valgrind (possibly leaked) | 
|  | Memcheck:Leak | 
|  | fun:malloc | 
|  | fun:_PyObject_GC_New | 
|  | fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING | 
|  | } | 
|  |  | 
|  | { | 
|  | Handle PyMalloc confusing valgrind (possibly leaked) | 
|  | Memcheck:Leak | 
|  | fun:malloc | 
|  | fun:_PyObject_GC_NewVar | 
|  | fun:COMMENT_THIS_LINE_TO_DISABLE_LEAK_WARNING | 
|  | } | 
|  |  | 
|  | # | 
|  | # Non-python specific leaks | 
|  | # | 
|  |  | 
|  | { | 
|  | Handle pthread issue (possibly leaked) | 
|  | Memcheck:Leak | 
|  | fun:calloc | 
|  | fun:allocate_dtv | 
|  | fun:_dl_allocate_tls_storage | 
|  | fun:_dl_allocate_tls | 
|  | } | 
|  |  | 
|  | { | 
|  | Handle pthread issue (possibly leaked) | 
|  | Memcheck:Leak | 
|  | fun:memalign | 
|  | fun:_dl_allocate_tls_storage | 
|  | fun:_dl_allocate_tls | 
|  | } | 
|  |  | 
|  | ###{ | 
|  | ###   ADDRESS_IN_RANGE/Invalid read of size 4 | 
|  | ###   Memcheck:Addr4 | 
|  | ###   fun:PyObject_Free | 
|  | ###} | 
|  | ### | 
|  | ###{ | 
|  | ###   ADDRESS_IN_RANGE/Invalid read of size 4 | 
|  | ###   Memcheck:Value4 | 
|  | ###   fun:PyObject_Free | 
|  | ###} | 
|  | ### | 
|  | ###{ | 
|  | ###   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value | 
|  | ###   Memcheck:Cond | 
|  | ###   fun:PyObject_Free | 
|  | ###} | 
|  |  | 
|  | ###{ | 
|  | ###   ADDRESS_IN_RANGE/Invalid read of size 4 | 
|  | ###   Memcheck:Addr4 | 
|  | ###   fun:PyObject_Realloc | 
|  | ###} | 
|  | ### | 
|  | ###{ | 
|  | ###   ADDRESS_IN_RANGE/Invalid read of size 4 | 
|  | ###   Memcheck:Value4 | 
|  | ###   fun:PyObject_Realloc | 
|  | ###} | 
|  | ### | 
|  | ###{ | 
|  | ###   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value | 
|  | ###   Memcheck:Cond | 
|  | ###   fun:PyObject_Realloc | 
|  | ###} | 
|  |  | 
|  | ### | 
|  | ### All the suppressions below are for errors that occur within libraries | 
|  | ### that Python uses.  The problems to not appear to be related to Python's | 
|  | ### use of the libraries. | 
|  | ### | 
|  |  | 
|  | { | 
|  | Generic ubuntu ld problems | 
|  | Memcheck:Addr8 | 
|  | obj:/lib/ld-2.4.so | 
|  | obj:/lib/ld-2.4.so | 
|  | obj:/lib/ld-2.4.so | 
|  | obj:/lib/ld-2.4.so | 
|  | } | 
|  |  | 
|  | { | 
|  | Generic gentoo ld problems | 
|  | Memcheck:Cond | 
|  | obj:/lib/ld-2.3.4.so | 
|  | obj:/lib/ld-2.3.4.so | 
|  | obj:/lib/ld-2.3.4.so | 
|  | obj:/lib/ld-2.3.4.so | 
|  | } | 
|  |  | 
|  | { | 
|  | DBM problems, see test_dbm | 
|  | Memcheck:Param | 
|  | write(buf) | 
|  | fun:write | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | fun:dbm_close | 
|  | } | 
|  |  | 
|  | { | 
|  | DBM problems, see test_dbm | 
|  | Memcheck:Value8 | 
|  | fun:memmove | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | fun:dbm_store | 
|  | fun:dbm_ass_sub | 
|  | } | 
|  |  | 
|  | { | 
|  | DBM problems, see test_dbm | 
|  | Memcheck:Cond | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | fun:dbm_store | 
|  | fun:dbm_ass_sub | 
|  | } | 
|  |  | 
|  | { | 
|  | DBM problems, see test_dbm | 
|  | Memcheck:Cond | 
|  | fun:memmove | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | obj:/usr/lib/libdb1.so.2 | 
|  | fun:dbm_store | 
|  | fun:dbm_ass_sub | 
|  | } | 
|  |  | 
|  | { | 
|  | GDBM problems, see test_gdbm | 
|  | Memcheck:Param | 
|  | write(buf) | 
|  | fun:write | 
|  | fun:gdbm_open | 
|  |  | 
|  | } | 
|  |  | 
|  | { | 
|  | ZLIB problems, see test_gzip | 
|  | Memcheck:Cond | 
|  | obj:/lib/libz.so.1.2.3 | 
|  | obj:/lib/libz.so.1.2.3 | 
|  | fun:deflate | 
|  | } | 
|  |  | 
|  | { | 
|  | Avoid problems w/readline doing a putenv and leaking on exit | 
|  | Memcheck:Leak | 
|  | fun:malloc | 
|  | fun:xmalloc | 
|  | fun:sh_set_lines_and_columns | 
|  | fun:_rl_get_screen_size | 
|  | fun:_rl_init_terminal_io | 
|  | obj:/lib/libreadline.so.4.3 | 
|  | fun:rl_initialize | 
|  | } | 
|  |  | 
|  | ### | 
|  | ### These occur from somewhere within the SSL, when running | 
|  | ###  test_socket_sll.  They are too general to leave on by default. | 
|  | ### | 
|  | ###{ | 
|  | ###   somewhere in SSL stuff | 
|  | ###   Memcheck:Cond | 
|  | ###   fun:memset | 
|  | ###} | 
|  | ###{ | 
|  | ###   somewhere in SSL stuff | 
|  | ###   Memcheck:Value4 | 
|  | ###   fun:memset | 
|  | ###} | 
|  | ### | 
|  | ###{ | 
|  | ###   somewhere in SSL stuff | 
|  | ###   Memcheck:Cond | 
|  | ###   fun:MD5_Update | 
|  | ###} | 
|  | ### | 
|  | ###{ | 
|  | ###   somewhere in SSL stuff | 
|  | ###   Memcheck:Value4 | 
|  | ###   fun:MD5_Update | 
|  | ###} | 
|  |  | 
|  | # | 
|  | # All of these problems come from using test_socket_ssl | 
|  | # | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:BN_bin2bn | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:BN_num_bits_word | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Value4 | 
|  | fun:BN_num_bits_word | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:BN_mod_exp_mont_word | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:BN_mod_exp_mont | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Param | 
|  | write(buf) | 
|  | fun:write | 
|  | obj:/usr/lib/libcrypto.so.0.9.7 | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:RSA_verify | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Value4 | 
|  | fun:RSA_verify | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Value4 | 
|  | fun:DES_set_key_unchecked | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Value4 | 
|  | fun:DES_encrypt2 | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | obj:/usr/lib/libssl.so.0.9.7 | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Value4 | 
|  | obj:/usr/lib/libssl.so.0.9.7 | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:BUF_MEM_grow_clean | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:memcpy | 
|  | fun:ssl3_read_bytes | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Cond | 
|  | fun:SHA1_Update | 
|  | } | 
|  |  | 
|  | { | 
|  | from test_socket_ssl | 
|  | Memcheck:Value4 | 
|  | fun:SHA1_Update | 
|  | } | 
|  |  | 
|  |  |