[ python-Bugs-1256669 ] Significant memory leak with PyImport_ReloadModule

SourceForge.net noreply at sourceforge.net
Wed Sep 14 20:09:13 CEST 2005


Bugs item #1256669, was opened at 2005-08-11 12:49
Message generated for change (Comment added) made by bheld
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1256669&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Ben Held (bheld)
Assigned to: Nobody/Anonymous (nobody)
Summary: Significant memory leak with PyImport_ReloadModule

Initial Comment:
Having recently upgraded to Python 2.4, I am having a 
large memory 
leak with the following code built with VC++ 6.0: 


                PyObject *pName, *pModule; 


                Py_Initialize(); 
                pName = PyString_FromString(argv[1]); 


                pModule = PyImport_Import(pName); 
                Py_DECREF(pName); 


                PyObject* pModule2 = 
PyImport_ReloadModule(pModule)­; 
                Py_DECREF(pModule2); 
                Py_DECREF(pModule); 
                Py_Finalize(); 
                return 0; 


I get leaks of over 500 kb.  I have another program which 
is much more 
complex, in which every call to PyImport_ReloadModule 
is leaking 200+ 
kb, even though I am calling Py_DECREF correctly.


----------------------------------------------------------------------

>Comment By: Ben Held (bheld)
Date: 2005-09-14 18:09

Message:
Logged In: YES 
user_id=1327580

This behavior is evident with Python 2.3.5 built on Windows 
with VC++ 6.0.

----------------------------------------------------------------------

Comment By: Collin Winter (collinwinter)
Date: 2005-09-14 17:53

Message:
Logged In: YES 
user_id=1344176

I've been unable to verify this on Linux. I've tested python
versions 2.2.3, 2.3.5 and 2.4.1, all compiled with gcc 3.3.5
on Debian 3.1 under kernel 2.6.8. I used the sample program
provided by Ben, modified with an infinite loop over the
PyImport_ReloadModule/PyDECREF(pModule2) lines, sleeping for
1 second after every 25 iterations. I tested reloading the
modules distutils, os.path, distutils.command.sdist for 300+
iterations each under each python version. No memory leak
was observed.

----------------------------------------------------------------------

Comment By: Ben Held (bheld)
Date: 2005-08-16 13:56

Message:
Logged In: YES 
user_id=1327580

Boundschecker shows the leak and I have verified this by 
watching the process memory increase via the task manager.

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2005-08-13 13:34

Message:
Logged In: YES 
user_id=21627

How do you know there is a memory leak?

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1256669&group_id=5470


More information about the Python-bugs-list mailing list