[Numpy-discussion] Memory leak in ndarray, more info

Karol Langner karol.langner@kn...
Sun Oct 28 19:28:53 CDT 2007

On Friday 26 October 2007 05:39, Robert Crida wrote:
> I recently posted about a memory leak in numpy and failed to mention the
> version. The leak manifests itself in numpy- but is not present in
> numpy-1.0.2
> The following code reproduces the bug:
> import numpy as np
> a = np.array([1.0, 2.0, 3.0])
> while True:
>     b = str(a)
> What happens above is that is repeatedly converted to a string. The process
> size grow quite rapidly.
> Has anyone else come across this? Where do I look to try to correct it?

Debugging exposes numpy.core.umath.seterrobj as the source, so you can get 
even faster memory growth with this (around 30MB/s on my machine):

import numpy
pyvals = numpy.core.umath.geterrobj()
while True:

That is actually ufunc_seterr in trunk/numpy/core/src/ufuncobject.c... which 
calls ufunc_update_use_defaults as of r3040. A call to Py_DECREF(errobj) is 
missing there after calling PyUFunc_GetPyValues.

So using the following patch on the current svn revision of ufuncobject.c 
should fix this leak:

>     Py_DECREF(errobj);


written by Karol Langner
Sun Oct 28 20:00:47 EDT 2007

More information about the Numpy-discussion mailing list