[pyicu-dev] Memory Leak?

Andi Vajda vajda at osafoundation.org
Fri Mar 10 10:25:48 PST 2006

On Fri, 10 Mar 2006, David Bolen wrote:

> I've just begun experimenting with PyICU and I'm seeing what appear to
> be some pretty significant memory leaks, so much so that I'm guessing
> I may just be doing something very wrong.  I was wondering if anyone
> might have some suggestions as to what it is.
>  ... snip ...
> Interestingly, swig 1.3.28 generates warnings during compilation
> (about the use of the -nodefault option) and runtime such as:
> Python 2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
>>>> from PyICU import Locale
>>>> l = Locale('en_US')
>>>> l = Locale('en_US')
> swig/python detected a memory leak of type 'icu::Locale *', no destructor found.

This is the clue, apparently no destructor code was generated. Ugh.

> This continues to happen even if I replace the "-nodefault" option
> with "-nodefaultctor" and "-nodefaultdtor" as suggested by the swig
> warning during compilation.  I haven't really tried to evaluate why
> PyICU is choosing to disable constructor creation.

Actually, I tried to replace -nodefault with -nodefaultctor and rebuild all 
with swig 1.3.28 and the destructor code was generated and these warnings 
didn't appear anymore.

> Given the scale of this apparent leak, I have to imagine it would have
> been seen in other cases where it might be getting used, so I'm hoping
> I'm just doing something wrong, and would appreciate any thoughts.

Indeed. Apart from probably not rebuilding it correctly, you didn't do 
anything wrong. I, however, did something completely wrong by using -nodefault 
when what I really wanted was -nodefaultctor, that is, no constructor code 
generation by default, only generate code for constructors that I declare.

So, apparently, the fix to this is simple:

   - use -nodefaultctor instead of -nodefault
   - and use swig 1.3.28 since -nodefaultctor doesn't appear to be supported
     with swig 1.3.24

Thank you for finding and reporting this.
This is indeed a bad one !

I haven't done any other testing of PyICU with swig 1.3.28 and would 
appreciate it if you could report back about how it is working for you.
Every swig upgrade introduces a dose of unknowns...

I intend to make a new PyICU release in about two weeks or so...

Thanks again !


More information about the pyicu-dev mailing list