Created
July 3, 2014 17:49
-
-
Save juliantaylor/dd56e32376dbf447525e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# 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 | |
} | |
# Object Malloc/Free/Realloc stuff, very broad | |
{ | |
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* | |
} | |
# Object Malloc/Free/Realloc stuff for size 8 | |
{ | |
ADDRESS_IN_RANGE/Invalid read of size 8 | |
Memcheck:Addr8 | |
fun:PyObject_Free* | |
} | |
{ | |
ADDRESS_IN_RANGE/Invalid read of size 8 | |
Memcheck:Value8 | |
fun:PyObject_Free* | |
} | |
{ | |
ADDRESS_IN_RANGE/Invalid read of size 8 | |
Memcheck:Addr8 | |
fun:PyObject_Realloc* | |
} | |
{ | |
ADDRESS_IN_RANGE/Invalid read of size 8 | |
Memcheck:Value8 | |
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 | |
} | |
#jtaylor added | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:tupledealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:code_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyObject_GC_Del | |
fun:code_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Value8 | |
fun:PyObject_GC_Del | |
fun:code_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Value8 | |
fun:PyObject_GC_Del | |
fun:tupledealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyObject_GC_Del | |
fun:tupledealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:dict_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyObject_GC_Del | |
fun:dict_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Value8 | |
fun:PyObject_GC_Del | |
fun:dict_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:collect.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyObject_GC_Del | |
fun:collect.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Value8 | |
fun:PyObject_GC_Del | |
fun:collect.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:match_dealloc.* | |
fun:frame_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:subtype_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:frame_dealloc.* | |
fun:PyEval_EvalFrameEx | |
fun:PyEval_EvalFrameEx | |
fun:PyEval_EvalFrameEx | |
fun:PyEval_EvalFrameEx | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:PyFrame_ClearFreeList | |
fun:collect.* | |
fun:_PyObject_GC_New | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:PyFrame_ClearFreeList | |
fun:collect.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyObject_GC_Del | |
fun:PyFrame_ClearFreeList | |
fun:collect.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyObject_GC_Del | |
fun:subtype_dealloc.* | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyObject_GC_Del | |
fun:PyDict_Fini | |
fun:Py_Finalize | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyObject_GC_Del | |
fun:PyDict_Fini | |
fun:Py_Finalize | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Value8 | |
fun:PyObject_GC_Del | |
fun:PyDict_Fini | |
fun:Py_Finalize | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Value8 | |
fun:PyGrammar_RemoveAccelerators | |
fun:Py_Finalize | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Addr4 | |
fun:PyGrammar_RemoveAccelerators | |
fun:Py_Finalize | |
} | |
{ | |
<insert_a_suppression_name_here> | |
Memcheck:Cond | |
fun:PyGrammar_RemoveAccelerators | |
fun:Py_Finalize | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment