Comment 3 for bug 521507

Revision history for this message
Garth Wells (garth-wells) wrote : Re: [Bug 521507] [NEW] Memory leak in Python Expression interface

Johan Hake wrote:
> On Saturday 13 February 2010 13:08:05 Garth Wells wrote:
>> Public bug reported:
>>
>> The below code leads to a memory leak (I see a leak over about 2MB over
>> 90s). The leak is related to the Expression. If I comment out the call
>> to
>>
>> eval(Array<double>&, const Array<double>&);
>>
>> from
>>
>> dolfin::GenericFunction::evaluate(double*, const double*, const
>> ufc::cell) const
>>
>> I don't detect a leak.
>
> I can confirm this bug. Not sure it is in the typemap, as it should also have
> shown up if we moved f = MyExpression(degree=1) outside of the loop.
>

I wonder if it could be in FFC and related to caching.

Garth

> Johan
>
>> ------
>>
>> from dolfin import *
>> parameters["form_compiler"]["cpp_optimize"] = True
>> parameters["form_compiler"]["optimize"] = True
>>
>> class MyExpression(Expression):
>> def eval(self, values, x):
>> if x[0] < DOLFIN_EPS:
>> values[0] = 1.0
>>
>> mesh = UnitSquare(32, 32)
>> for t in xrange(20000):
>> for level in xrange(100):
>> V = FunctionSpace(mesh, "CG", 1)
>> v = TestFunction(V)
>> u = Function(V)
>> u0 = Function(V)
>> f = MyExpression(degree=1)
>> L = v*(u-u0)*dx + v*f*ds
>> b = assemble(L)
>> print "----"
>>
>> ** Affects: dolfin
>> Importance: Undecided
>> Status: New
>>
>