(original) (raw)
Hi Victor:No, I'm using the new heap analysis functions in DS2015\. We think we have found one issue. In the following sequence, dict has no side effects, yet it is used -- unless someone can shed light on why dict is used in this case:
/\* Clear the modules dict. \*/
PyDict\_Clear(modules);
/\* Restore the original builtins dict, to ensure that any
user data gets cleared. \*/
dict = PyDict\_Copy(interp->builtins);
if (dict == NULL)
PyErr\_Clear();
PyDict\_Clear(interp->builtins);
if (PyDict\_Update(interp->builtins, interp->builtins\_copy))
PyErr\_Clear();
Py\_XDECREF(dict);
And removing dict from this sequence seems to have fixed one of the issues, yielding 14k per iteration.
Simple program: Good idea. We will try that -- right now it's embedded in a more complex environment, but we have tried to strip it down to a very simple sequence.
The next item on our list is memory that is not getting freed after running simple string. It's in the parsertok sequence -- it seems that the syntax tree is not getting cleared -- but this opinion is preliminary.
Best,
Matt
On 1/13/2016 5:10 PM, Victor Stinner
wrote:
Hi,2016-01-13 20:32 GMT+01:00 Matthew Paulson paulson@busiq.com:
I've spent some time performing memory leak analysis while using Python in an embedded configuration.
Hum, did you try tracemalloc?https://docs.python.org/dev/library/tracemalloc.html
https://pytracemalloc.readthedocs.org/
Is there someone in the group that would like to discuss this topic. There seems to be other leaks as well. I'm new to Python-dev, but willing to help or work with someone who is more familiar with these areas than I.
Are you able to reproduce the leak with a simple program?Victor
--
![]()