Skip to content

Instantly share code, notes, and snippets.

@tshinnic
Created August 7, 2014 01:57
Show Gist options
  • Save tshinnic/663906fa807a07e1a0c6 to your computer and use it in GitHub Desktop.
Save tshinnic/663906fa807a07e1a0c6 to your computer and use it in GitHub Desktop.
Valgrind suppression file for FontForge built with Python 2
# This file for FontForge built with Python 2
#
# The below suppressions suppress just about every entry that Python
# could have contributed to. This is likely excessive... ;)
#
# We make good use of the wildcarding features of Valgrind. By using
# wildcarded function names we can cover more cases with just one entry.
# And by using wildcarded library object filenames we can hope this
# source is portable to more systems.
# On the tested system (Fedora 20), these libraries are:
# /usr/lib64/libgobject-2.0.so.0.3800.2
# /usr/lib64/libpython2.7.so.1.0
# /usr/lib64/ld-2.18.so
# On one tested system (Ubuntu 14.04), these libraries are:
# /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0)
# /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4000.0)
# Under Ubuntu 14.04 and initialization only
#
# 60 ff_dlinit_leak_calloc_1 valgrind_ff_p2.supp:639 suppressed: 4,164 bytes in 60 blocks
# 21 ff_dlinit_leak_malloc_1 valgrind_ff_p2.supp:652 suppressed: 320 bytes in 21 blocks
# 1 ff_dlinit_leak_malloc_1 valgrind_ff_p2.supp:665 suppressed: 184 bytes in 1 blocks
# 2 ff_pango_leak_calloc_lib_global valgrind_ff_pango.supp:26 suppressed: 63 bytes in 2 blocks
# 10 ff_pango_leak_malloc_lib_global valgrind_ff_pango.supp:34 suppressed: 336 bytes in 10 blocks
# 12 ff_pango_leak_realloc_lib_global valgrind_ff_pango.supp:42 suppressed: 78,683 bytes in 22 blocks
# 1 ff_pyinit_addr4_1 valgrind_ff_p2.supp:134
# 1 ff_pyinit_addr4_2 valgrind_ff_p2.supp:145
# 2 ff_general_leak_calloc_1 valgrind_ff_p2.supp:117 suppressed: 144 bytes in 2 blocks
# 326 ff_pyeval_addr4_1 valgrind_ff_p2.supp:489
# 1 ff_pyeval_addr4_2 valgrind_ff_p2.supp:497
# 1 ff_pyeval_cond_1 valgrind_ff_p2.supp:508
# 2 ff_pyeval_leak_malloc_4 valgrind_ff_p2.supp:562 suppressed: 1,064 bytes in 2 blocks
# 1 ff_pyeval_value8_1 valgrind_ff_p2.supp:518
# 174 ff_pyfinal_addr4_1 valgrind_ff_p2.supp:601
# Under Fedora 20 and initialization only
#
# 60 ff_dlinit_leak_calloc_1 valgrind_ff_p2.supp:236 suppressed: 4,164 bytes in 60 blocks
# 18 ff_dlinit_leak_malloc_1 valgrind_ff_p2.supp:249 suppressed: 288 bytes in 18 blocks
# 1 ff_dlinit_leak_malloc_1 valgrind_ff_p2.supp:262 suppressed: 184 bytes in 1 blocks
# 2 glibc-2.5.x-on-SUSE-10.2-(PPC)-2a /usr/lib64/valgrind/default.supp:1286
# 68 ff_general_leak_calloc_1 valgrind_ff_p2.supp:154 suppressed: 4,352 bytes in 68 blocks
# 129 ff_general_leak_malloc_1 valgrind_ff_p2.supp:130 suppressed: 186,160 bytes in 2,460 blocks
# 306 ff_pygeneral_leak_malloc_2 valgrind_ff_p2.supp:142 suppressed: 73,137 bytes in 1,399 blocks
# 221 ff_pycall_leak_malloc_2 valgrind_ff_p2.supp:528 suppressed: 14,176 bytes in 221 blocks
# 1 ff_pycall_leak_realloc_1 valgrind_ff_p2.supp:551 suppressed: 48 bytes in 1 blocks
# 43 ff_pyeval_leak_malloc_1 valgrind_ff_p2.supp:605 suppressed: 3,456 bytes in 48 blocks
# 133 ff_pyeval_leak_malloc_3 valgrind_ff_p2.supp:628 suppressed: 133,335 bytes in 745 blocks
# 107 ff_pyeval_leak_malloc_4 valgrind_ff_p2.supp:639 suppressed: 119,689 bytes in 502 blocks
# 9 ff_pyeval_leak_malloc_5 valgrind_ff_p2.supp:649 suppressed: 63,560 bytes in 227 blocks
# 3 ff_pyeval_leak_realloc_1 valgrind_ff_p2.supp:663 suppressed: 8,448 bytes in 54 blocks
# 7 ff_pyinit_leak_malloc_1 valgrind_ff_p2.supp:194 suppressed: 1,592 bytes in 8 blocks
# 55 ff_pyinit_leak_malloc_2 valgrind_ff_p2.supp:205 suppressed: 5,314 bytes in 55 blocks
# 167 ff_pyinit_leak_malloc_3 valgrind_ff_p2.supp:215 suppressed: 11,232 bytes in 167 blocks
# 2 ff_pyinit_leak_malloc_4 valgrind_ff_p2.supp:227 suppressed: 560 bytes in 2 blocks
# 2 ff_pyloadmodule_leak_calloc_1 valgrind_ff_p2.supp:314 suppressed: 56 bytes in 2 blocks
# 1 ff_pyloadmodule_leak_malloc_1 valgrind_ff_p2.supp:240 suppressed: 72 bytes in 1 blocks
# 1 ff_pyloadmodule_leak_malloc_4 valgrind_ff_p2.supp:279 suppressed: 786,432 bytes in 1 blocks
# 356 ff_pyloadmodule_leak_malloc_5 valgrind_ff_p2.supp:290 suppressed: 22,816 bytes in 356 blocks
# 20 ff_pyloadmodule_leak_malloc_6 valgrind_ff_p2.supp:302 suppressed: 2,944 bytes in 20 blocks
# 199 ff_pyloadmodule_leak_malloc_8 valgrind_ff_p2.supp:338 suppressed: 11,816 bytes in 215 blocks
# 685 ff_pyloadmodule_leak_malloc_9 valgrind_ff_p2.supp:350 suppressed: 58,344 bytes in 686 blocks
# 2 ff_pyloadmodule_leak_realloc_1 valgrind_ff_p2.supp:326 suppressed: 1,136 bytes in 2 blocks
# 16 ff_pymarshall_leak_malloc_1 valgrind_ff_p2.supp:470 suppressed: 618,189 bytes in 7,714 blocks
# 3 ff_pymarshall_leak_realloc_2 valgrind_ff_p2.supp:491 suppressed: 260 bytes in 14 blocks
# 4 ff_pyunicode_leak_malloc_0 valgrind_ff_p2.supp:416 suppressed: 3,232 bytes in 71 blocks
# 3 ff_gtk_init_leak_calloc_1 valgrind_ff_p2.supp:797 suppressed: 216 bytes in 3 blocks
# 10 ff_gtk_init_leak_malloc_2 valgrind_ff_p2.supp:784 suppressed: 744 bytes in 10 blocks
# 6 ff_gtk_leak_calloc_2 valgrind_ff_p2.supp:868 suppressed: 432 bytes in 6 blocks
# 55 ff_gtk_leak_calloc_3 valgrind_ff_p2.supp:880 suppressed: 3,520 bytes in 55 blocks
# 6 ff_gtk_leak_malloc_1 valgrind_ff_p2.supp:829 suppressed: 360 bytes in 6 blocks
# 1 ff_gtk_leak_malloc_2 valgrind_ff_p2.supp:843 suppressed: 240 bytes in 1 blocks
# 3 ff_gtk_leak_realloc_1 valgrind_ff_p2.supp:892 suppressed: 1,752 bytes in 3 blocks
# 8 ff_gdk_leak_malloc_1 valgrind_ff_p2.supp:904 suppressed: 536 bytes in 8 blocks
# 1 ff_cairo_leak_malloc_1 valgrind_ff_p2.supp:922 suppressed: 32 bytes in 1 blocks
# - - - - - - - - - - - - - - - - - - - - - - - -
# General
# P2 F
#{
# ff_general_leak_malloc_0
# Memcheck:Leak
# match-leak-kinds: definite,possible
# fun:malloc
# ...
# obj:*/libpython2.*.so.*
#}
# P2 F
{
ff_general_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyTuple_*
...
obj:*/libpython2.*.so.*
}
# P2 F
{
ff_pygeneral_leak_malloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
fun:PyString_*
...
obj:*/libpython2.*.so.*
}
# P2 F
{
ff_general_leak_calloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:calloc
fun:g_malloc0
...
obj:*/libgobject-2.0.so.*
fun:g_type_class_ref
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# PyInit
# P2 U
{
ff_pyinit_addr4_1
Memcheck:Addr4
fun:PyObject_Realloc
obj:*/libpython2.*.so.*
...
fun:PyRun_FileExFlags
fun:PyRun_SimpleFileExFlags
fun:LoadFilesInPythonInitDir
}
# P2 U
{
ff_pyinit_addr4_2
Memcheck:Addr4
fun:PyObject_Free
obj:*/libpython2.*.so.*
...
fun:PyRun_FileExFlags
fun:PyRun_SimpleFileExFlags
fun:LoadFilesInPythonInitDir
}
# P2 F
{
ff_pyinit_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
obj:*/libpython2.*.so.*
fun:PyRun_StringFlags
}
# P2 F
{
ff_pyinit_leak_malloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:FontForge_InitializeEmbeddedPython
}
# P2 F
{
ff_pyinit_leak_malloc_3
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyTuple_*
...
fun:Py_InitializeEx
}
# P2 F
{
ff_pyinit_leak_malloc_4
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyDict_*
...
fun:Py_InitializeEx
}
# P2 F
{
ff_pyloadmodule_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyTuple_*
...
fun:PyImport_ImportModule
}
# P2 F
{
ff_pyloadmodule_leak_malloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:init*
...
fun:PyImport_ImportModuleLevel
}
# P2 F
{
ff_pyloadmodule_leak_malloc_3
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyTuple_*
...
obj:*/libpython2.*.so.*
fun:PyImport_ImportModuleLevel
}
# P2 F
{
ff_pyloadmodule_leak_malloc_4
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
obj:*/libpython2.*.so.*
...
fun:init*
fun:_PyImport_LoadDynamicModule
}
# P2 F
{
ff_pyloadmodule_leak_malloc_5
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyTuple_New
...
fun:_PyImport_LoadDynamicModule
}
# P2 F
{
ff_pyloadmodule_leak_malloc_6
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:g_malloc
...
fun:init*
fun:_PyImport_LoadDynamicModule
}
# P2 F
{
ff_pyloadmodule_leak_calloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:calloc
fun:g_malloc0
...
fun:init*
fun:_PyImport_LoadDynamicModule
}
# P2 F
{
ff_pyloadmodule_leak_realloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:realloc
fun:g_realloc
...
fun:init*
fun:_PyImport_LoadDynamicModule
}
# P2 F
{
ff_pyloadmodule_leak_malloc_8
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:g_malloc
...
obj:*/python2.*/gtk-2.*/*.so*
fun:init*
}
# P2 F
{
ff_pyloadmodule_leak_malloc_9
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:init*
}
# P2 F
{
ff_pyloadmodule_leak_malloc_10
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:init*
...
obj:*/libpython2.*.so.*
fun:PyImport_ImportModuleLevel
}
# P2 F
{
ff_pyloadmodule_leak_malloc_11
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyErr_NewException
fun:init*
}
# P2 F
{
ff_pyloadmodule_leak_malloc_12
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyType_Ready
...
fun:init*
}
# P2 F
{
ff_pyloadmodule_leak_malloc_13
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyTuple_*
...
obj:*/python2.*/gtk-2.*/*.so*
fun:init*
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# PyUnicode
# P2 F
{
ff_pyunicode_leak_malloc_0
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
obj:*/libpython2.*.so.*
fun:PyUnicode*
...
obj:*/libpython2.*.so.*
}
# P2 F
{
ff_pymarshall_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
obj:*/libpython2.*.so.*
fun:PyMarshal_ReadObjectFromString
}
# P2 F
{
ff_pymarshall_leak_realloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:realloc
...
obj:*/libpython2.*.so.*
fun:PyMarshal_ReadObjectFromString
}
# P2 F
{
ff_pymarshall_leak_realloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:realloc
obj:*/libpython2.*.so.*
...
obj:*/libpython2.*.so.*
fun:PyMarshal_ReadObjectFromString
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# PyCall
# P2 U
{
ff_pycall_addr4_1
Memcheck:Addr4
fun:PyObject_Free
obj:*/libpython2.*.so.*
...
fun:PyObject_Call
}
# P2 F
{
ff_pycall_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyObject_Call*
}
# P2 F
{
ff_pycall_leak_malloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
obj:*/libpython2.*.so.*
fun:_PyObject_Call*
}
# P2 F
{
ff_pycall_leak_malloc_3
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
obj:*/libpython2.*.so.*
...
obj:*/libpython2.*.so.*
fun:PyObject_Call*
}
#
# P2 F
{
ff_pycall_leak_realloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:realloc
...
obj:*/libpython2.*.so.*
fun:PyObject_Call*
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# PyEval
# P2 U
{
ff_pyeval_addr4_1
Memcheck:Addr4
fun:PyObject_Free
...
fun:PyEval_EvalFrameEx
fun:PyEval_EvalCodeEx
}
{
ff_pyeval_addr4_2
Memcheck:Addr4
fun:PyObject_Realloc
obj:*/libpython2.*.so.*
...
fun:PyEval_EvalFrameEx
fun:PyEval_EvalCodeEx
}
# P2 U
{
ff_pyeval_cond_1
Memcheck:Cond
fun:PyObject_Free
...
fun:PyEval_EvalFrameEx
fun:PyEval_EvalCodeEx
}
# P2 U
{
ff_pyeval_value8_1
Memcheck:Value8
fun:PyObject_Free
...
fun:PyEval_EvalFrameEx
fun:PyEval_EvalCodeEx
}
# P2 F
{
ff_pyeval_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyTuple_*
...
fun:PyEval_EvalFrameEx
}
# P2 F
{
ff_pyeval_leak_malloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyEval_EvalFrameEx
fun:PyEval_EvalCodeEx
}
# P2 F
{
ff_pyeval_leak_malloc_3
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
obj:*/libpython2.*.so.*
...
fun:PyEval_EvalFrameEx
fun:PyEval_EvalCodeEx
}
# P2 F
{
ff_pyeval_leak_malloc_4
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
...
obj:*/libpython2.*.so.*
fun:PyObject_Call*
}
# P2 F
{
ff_pyeval_leak_malloc_5
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:PyObject_Malloc
...
fun:PyDict_*
...
obj:*/libpython2.*.so.*
fun:PyEval_EvalFrameEx
}
# P2 F
{
ff_pyeval_leak_realloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:realloc
...
fun:PyEval_EvalFrameEx
fun:PyEval_EvalCodeEx
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# PyFinal
# P2 U
{
ff_pyfinal_addr4_1
Memcheck:Addr4
fun:PyObject_Free
obj:*/libpython2.*.so.*
...
fun:Py_Finalize
}
# P2 U
{
ff_pyfinal_cond_1
Memcheck:Cond
fun:PyObject_Free
obj:*/libpython2.*.so.*
...
fun:Py_Finalize
fun:FontForge_FinalizeEmbeddedPython
fun:fontforge_main
}
# P2 U
{
ff_pyfinal_value8_1
Memcheck:Value8
fun:PyObject_Free
obj:*/libpython2.*.so.*
...
fun:Py_Finalize
fun:FontForge_FinalizeEmbeddedPython
fun:fontforge_main
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# dl_init
# P2 U
{
ff_dlinit_leak_calloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:calloc
fun:g_malloc0
...
obj:*/libgobject-2.0.so.*
fun:call_init.part.0
fun:_dl_init
obj:*/ld-2.*.so
}
# P2 U
{
ff_dlinit_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:realloc
...
obj:*/libgobject-2.0.so.*
fun:call_init.part.0
fun:_dl_init
obj:*/ld-2.*.so
}
# P2 U
{
ff_dlinit_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:realloc
fun:g_realloc
...
obj:*/libgobject-2.0.so.*
fun:call_init.part.0
fun:_dl_init
obj:*/ld-2.*.so
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# gtk_init
# P2 F
#{
# ff_gtk_init_leak_malloc_1
# Memcheck:Leak
# match-leak-kinds: definite,possible
# fun:malloc
# fun:g_malloc
# fun:g_slice_alloc
# obj:*/libgobject-2.*.so.*
# ...
# obj:*/python2.*/gtk-2.*/gtk*.so*
# fun:gtk_module_init
#}
# P2 F
{
ff_gtk_init_leak_malloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:g_malloc
fun:g_memdup
obj:*/libgobject-2.*.so.*
...
fun:gtk_module_init
}
# P2 F
{
ff_gtk_init_leak_calloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:calloc
fun:g_malloc0
...
fun:gtk_module_init
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# gtk_
# P2 F
### {
### ff_gtk_leak_malloc_a
### Memcheck:Leak
### match-leak-kinds: definite,possible
### fun:malloc
### fun:PyObject_Malloc
### ...
### fun:PyTuple_*
### ...
### obj:*/python2.*/gtk-2.*/*.so*
### }
### # 1001 ff_gtk_leak_malloc_a valgrind_ff_p2.supp:196 suppressed: 72,656 bytes in 1,001 blocks
# 6 ff_gtk_leak_malloc_1 valgrind_ff_p2.supp:829 suppressed: 360 bytes in 6 blocks
# 1 ff_gtk_leak_malloc_2 valgrind_ff_p2.supp:843 suppressed: 240 bytes in 1 blocks
# P2 F
{
ff_gtk_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:g_malloc
fun:g_slice_alloc
obj:*/libgobject-2.0.so.*
...
fun:g_type_register_static
...
fun:gtk_*
}
# P2 F
{
ff_gtk_leak_malloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
fun:g_malloc
fun:g_memdup
obj:*/libgobject-2.0.so.*
...
fun:gtk_init_check
}
# P2 F
{
ff_gtk_leak_calloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:calloc
fun:g_malloc0
...
obj:*/libgtk-x11-2.0.so.*
...
fun:gtk_*
}
# P2 F
{
ff_gtk_leak_calloc_2
Memcheck:Leak
match-leak-kinds: definite,possible
fun:calloc
fun:g_malloc0
...
obj:*/libgtk-x11-2.0.so.*
fun:g_type_class_ref
}
# P2 F
{
ff_gtk_leak_realloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:realloc
fun:g_realloc
...
obj:*/libgtk-x11-2.0.so.*
}
# P2 F
{
ff_gdk_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:calloc
fun:g_malloc0
...
obj:*/libgobject-2.0.so.*
...
...
fun:gdk_*
}
# - - - - - - - - - - - - - - - - - - - - - - - -
# cairo
# P2 F
{
ff_cairo_leak_malloc_1
Memcheck:Leak
match-leak-kinds: definite,possible
fun:malloc
obj:*/libcairo.so.*
...
fun:cairo_*
}
@tshinnic
Copy link
Author

tshinnic commented Aug 7, 2014

See also the associated suppression file gist
"Valgrind suppression file for FontForge built with Python 3"

See also the associated suppression file gist
"Valgrind suppression file for FontForge built with Pango"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment