pybind11/tests/valgrind-python.supp
Yannick Jadoul 0f8d5f2eb6
Add a Valgrind build on debug Python 3.9 (#2746)
* Adding a valgrind build on debug Python 3.9

Co-authored-by: Boris Staletic <boris.staletic@gmail.com>

* Add Valgrind suppression files

- Introduce suppression file, populate it with a first suppression taken from CPython, and fix one leak in the tests
- Suppress leak in NumPy
- More clean tests!
- Tests with names a-e passing (except for test_buffer)
- Suppress multiprocessing errors
- Merge multiprocessing suppressions into other suppression files
- Numpy seems to be spelled with a big P
- Append single entry from valgrind-misc.supp to valgrind-python.supp, and make clear valgrind-python.supp is only CPython

Co-authored-by: Boris Staletic <boris.staletic@gmail.com>

* Enable test_virtual_functions with a workaround

* Add a memcheck cmake target

- Add a memcheck cmake target
- Reformat cmake
- Appease the formatting overlords - they are angry
- Format CMake valgrind target decently

* Update CI config to new action versions

* fix: separate memcheck from pytest

* ci: cleanup

* Merge Valgrind and other deadsnakes builds

Co-authored-by: Boris Staletic <boris.staletic@gmail.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2021-01-15 21:07:31 +01:00

136 lines
3.0 KiB
Plaintext

# Valgrind suppression file for CPython errors and leaks in pybind11 tests
# Taken verbatim from https://github.com/python/cpython/blob/3.9/Misc/valgrind-python.supp#L266-L272
{
Uninitialised byte(s) false alarm, see bpo-35561
Memcheck:Param
epoll_ctl(event)
fun:epoll_ctl
fun:pyepoll_internal_ctl
}
{
Python leaks when spawning a subprocess
Memcheck:Leak
fun:malloc
fun:_PyMem_RawMalloc
fun:PyMem_RawMalloc
fun:PyThread_allocate_lock
fun:_PyEval_InitState
fun:PyInterpreterState_New
...
fun:pyinit_core*
fun:Py_InitializeFromConfig
fun:pymain_init
fun:pymain_main
}
{
Python leaks when spawning a subprocess
Memcheck:Leak
fun:malloc
fun:_PyMem_RawMalloc
fun:_PyMem_DebugRawAlloc
fun:_PyMem_DebugRawMalloc
fun:PyMem_RawMalloc
fun:PyThread_allocate_lock
fun:_PyRuntimeState_Init_impl
fun:_PyRuntimeState_Init
fun:_PyRuntime_Initialize
fun:pymain_init
fun:pymain_main
fun:Py_BytesMain
}
{
Python leaks when spawning a subprocess
Memcheck:Leak
fun:malloc
fun:_PyMem_RawMalloc
fun:PyMem_RawMalloc
fun:PyThread_allocate_lock
fun:_PyImport_AcquireLock
fun:_imp_acquire_lock_impl*
fun:_imp_acquire_lock
fun:cfunction_vectorcall_NOARGS
fun:_PyObject_VectorcallTstate
fun:PyObject_Vectorcall
fun:call_function
fun:_PyEval_EvalFrameDefault
fun:_PyEval_EvalFrame
fun:function_code_fastcall
}
{
Python leaks when spawning a subprocess
Memcheck:Leak
fun:malloc
fun:_PyMem_RawMalloc
fun:PyMem_RawMalloc
fun:PyThread_allocate_lock
fun:newlockobject
...
fun:cfunction_vectorcall_NOARGS
fun:_PyObject_VectorcallTstate
fun:PyObject_Vectorcall
fun:call_function
fun:_PyEval_EvalFrameDefault
fun:_PyEval_EvalFrame
fun:function_code_fastcall
fun:_PyFunction_Vectorcall
}
{
Python leaks when spawning a subprocess
Memcheck:Leak
fun:malloc
fun:_PyMem_RawMalloc
fun:PyMem_RawMalloc
fun:PyThread_allocate_lock
fun:rlock_new
fun:type_call
fun:_PyObject_Call
fun:PyObject_Call
fun:do_call_core
fun:_PyEval_EvalFrameDefault
fun:_PyEval_EvalFrame
fun:_PyEval_EvalCode
fun:_PyFunction_Vectorcall
}
# Not really CPython-specific, see link
{
dlopen leak (https://stackoverflow.com/questions/1542457/memory-leak-reported-by-valgrind-in-dlopen)
Memcheck:Leak
fun:malloc
...
fun:dl_open_worker
fun:_dl_catch_exception
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_exception
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.2.5
fun:_PyImport_FindSharedFuncptr
fun:_PyImport_LoadDynamicModuleWithSpec
}
# Not really CPython-specific, see link
{
dlopen leak (https://stackoverflow.com/questions/1542457/memory-leak-reported-by-valgrind-in-dlopen)
Memcheck:Leak
fun:malloc
...
fun:dl_open_worker
fun:_dl_catch_exception
fun:_dl_open
fun:dlopen_doit
fun:_dl_catch_exception
fun:_dl_catch_error
fun:_dlerror_run
fun:dlopen@@GLIBC_2.2.5
fun:_PyImport_FindSharedFuncptr
fun:_PyImport_LoadDynamicModuleWithSpec
}