[SciPy-user] Memory leak in delaunay interpolator

Nils Wagner nwagner at iam.uni-stuttgart.de
Wed Jan 16 14:40:33 EST 2008


On Wed, 16 Jan 2008 11:38:02 +0100
  Rob Hetland <hetland at tamu.edu> wrote:
> 
> I'm not sure who else uses the delaunay package (was in 
> 
> scipy.sandbox, now lives in scikits), but I find it 
>indispensable.   
> Today I found what appears to be a memory leak in the 
>interpolator  
> and extrapolator objects.  This simple code demonstrates 
>the leak:
> 
> 
> 
> from scipy.sandbox import delaunay  # or wherever your 
>delaunay  
> package lives these days
> from numpy.random import rand
> 
> xi, yi = rand(2, 1000)
> x, y = rand(2, 100)
> tri = delaunay.Triangulation(xi, yi)
> 
> for n in range(100000):
>    interp = tri.nn_interpolator(rand(1000))
>    z = interp(x, y)
> 
> 
> 
> I tested this code on Mac OS X 10.4, and a recent 
>version of Ubuntu.   
> Both show memory usage increasing consistently through 
>the run.
> 
> Also, while I am here, does anybody have any other 
>advice on 2D  
> interpolation?  3D?  This is something I need to do 
>often, and I am  
> still waiting for the perfect solution to come along.
> 
> -Rob
> 
> ----
> Rob Hetland, Associate Professor
> Dept. of Oceanography, Texas A&M University
> http://pong.tamu.edu/~rob
> phone: 979-458-0096, fax: 979-845-6331
> 
> 
> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-user

Hi Rob,
  
I have installed delaunay from scratch.
Your code produces a segfault here. I will file a ticket.

from scikits import delaunay # or wherever your delaunay 
package lives these days
from numpy.random import rand

xi, yi = rand(2, 1000)
x, y = rand(2, 100)
tri = delaunay.Triangulation(xi, yi)

for n in range(100000):
     interp = tri.nn_interpolator(rand(1000))
     z = interp(x, y)

(gdb) run hetland.py
Starting program: /usr/bin/python hetland.py
[Thread debugging using libthread_db enabled]
[New Thread 1077176000 (LWP 16333)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1077176000 (LWP 16333)]
0x4045cfb0 in nn_interpolate_unstructured_method 
(self=0x0, args=0x1) at _delaunay.cpp:504
504             CLEANUP
(gdb) bt
#0  0x4045cfb0 in nn_interpolate_unstructured_method 
(self=0x0, args=0x1) at _delaunay.cpp:504
#1  0x4007b583 in PyCFunction_Call () from 
/usr/lib/libpython2.4.so.1.0
#2  0x400b2a91 in PyEval_EvalFrame () from 
/usr/lib/libpython2.4.so.1.0
#3  0x400b4bc1 in PyEval_EvalCodeEx () from 
/usr/lib/libpython2.4.so.1.0
#4  0x4006b13a in function_call () from 
/usr/lib/libpython2.4.so.1.0
#5  0x40053c37 in PyObject_Call () from 
/usr/lib/libpython2.4.so.1.0
#6  0x4005cedb in instancemethod_call () from 
/usr/lib/libpython2.4.so.1.0
#7  0x40053c37 in PyObject_Call () from 
/usr/lib/libpython2.4.so.1.0
#8  0x4008ec2c in slot_tp_call () from 
/usr/lib/libpython2.4.so.1.0
#9  0x40053c37 in PyObject_Call () from 
/usr/lib/libpython2.4.so.1.0
#10 0x400b1f37 in PyEval_EvalFrame () from 
/usr/lib/libpython2.4.so.1.0
#11 0x400b4bc1 in PyEval_EvalCodeEx () from 
/usr/lib/libpython2.4.so.1.0
#12 0x400b4e95 in PyEval_EvalCode () from 
/usr/lib/libpython2.4.so.1.0
#13 0x400cf618 in run_node () from 
/usr/lib/libpython2.4.so.1.0
#14 0x400d0db3 in PyRun_SimpleFileExFlags () from 
/usr/lib/libpython2.4.so.1.0
#15 0x400d137a in PyRun_AnyFileExFlags () from 
/usr/lib/libpython2.4.so.1.0
#16 0x400d750a in Py_Main () from 
/usr/lib/libpython2.4.so.1.0
#17 0x0804871a in main (argc=1, argv=0x1) at 
ccpython.cc:10

Cheers,
           Nils



More information about the SciPy-User mailing list