On 28/05/07, Martin Vopatek <[EMAIL PROTECTED]> wrote:
> Hello
>
> There seem to be a memory leak in PyODE due to
> undeleted geom objects. I found the problem while working on a
> simulator that need to create and delete many geom objects.
> I used the Heapy memory profiler (part of Guppy-PE) to determine
> the cause of the leak.
> I'm running python-2.4.2 and PyODE 1.2.0.

Attached a reply from a thread in 2005 (since I can't find it archived
anywhere).

Matthias Baas <[EMAIL PROTECTED]> to pyode-user 04/08/05

Chris Bainbridge wrote:
> Hi, the following code appears to leak Body and dict objects. Memprof
> [...]
> I've looked at the pyode code. It appears that nothing is ever removed
> from the global dictionary _geom_c2py_lut. Should this be done in geom
> __dealloc__ ?

The _geom_c2py_lut is a dictionary that serves as a lookup table to
convert the geom pointer received from ODE into the appropriate Python
geom object (which has to be done during collisions).
So when a geom is created it adds itself to the dictionary and indeed,
it is never removed from there.
The geom cannot remove itself in __dealloc__() because as long as
there's a reference in the dictionary it is not destroyed and
__dealloc__() is never called. The solution would be weak references but
at the time I wrote the stuff Pyrex didn't support this. I contacted the
author, but I believe the current version of Pyrex still doesn't support
it (I haven't checked explicitly but at least I never noticed anything
in the changelogs).

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Pyode-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyode-user

Reply via email to