[New-bugs-announce] [issue25302] Memory Leaks with Address Sanitizer
Matt Clarkson
report at bugs.python.org
Fri Oct 2 18:04:25 CEST 2015
New submission from Matt Clarkson:
I have the following `main.cpp`
```
#include <Python.h>
int main() {
Py_Initialize();
if (!Py_IsInitialized())
return 1;
Py_Finalize();
return 0;
}
```
Compiled with on Arch Linux 4.2.1 gcc 5.2.0 python 3.4.3:
```
g++ -fsanitize=address main.cpp -o main `python-config --includes --ldflags
```
I end up with 424764 byte(s) leaked in 316 allocation(s).
I can suppress the leaks in the following ways:
```
# These are the high level functions that leak (i.e. the *top* of the call stack)
#leak:Py_Initialize
#leak:Py_Finalize
#leak:PyEval_EvalCode
# Low level private functions that leak (i.e. the *bottom* of the call stack)
leak:new_keys_object
leak:type_new
leak:new_dict_with_shared_keys
leak:make_keys_shared
leak:_PyObject_Malloc
leak:PyList_New
# The closest to the leak public functions (i.e. closest to the *top* of the call stack)
#leak:PyUnicode_New
#leak:PyList_New
#leak:PyFrame_New
#leak:PyDict_New
#leak:PyBytes_FromStringAndSize
#leak:PyObject_Call
#leak:PyType_Ready
#leak:PyDict_Merge
#leak:PyDict_SetItemString
#leak:PyEval_EvalFrameEx
```
I read in the `PyInitalize` documentation that circular references, etc might not be freed but 424764 bytes seems a lot just for initializing the Python engine.
I would like to help out solving the memory leaks, if that is possible?
----------
components: Interpreter Core
files: leak.log
messages: 252136
nosy: Matt Clarkson
priority: normal
severity: normal
status: open
title: Memory Leaks with Address Sanitizer
type: resource usage
versions: Python 3.4
Added file: http://bugs.python.org/file40659/leak.log
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue25302>
_______________________________________
More information about the New-bugs-announce
mailing list