On first look I would agree there is possibly a problem. There also
would appear to be
similar issues in other parts of mod_python. For example in
cfgtree_walk() of util.c it has:
PyObject *t = Py_BuildValue("(s, s)", dir->directive, dir-
>args);
if (!t)
return PyErr_NoMemory();
PyList_Append(list, t);
with "t" not being DECREF'd either.
Also, in req_readlines() of requestobject.c, we have:
line = req_readline(self, rlargs);
while (line && (PyString_Size(line)>0)) {
PyList_Append(result, line);
size += PyString_Size(line);
if ((sizehint != -1) && (size >= size))
break;
line = req_readline(self, args);
}
No DECREF for item added to list.
I can't see any others in relation to dictionaries yet, but we
probably need to do a good
audit of all the code for such things as I have only check
PyList_Append() and
PyDict_SetItem() and not the other ways stuff can be added to such
data structures.
Anyway, still need to run some tests yet to confirm memory leak. :-)
Graham
On 08/07/2006, at 1:05 AM, Harold Ship (JIRA) wrote:
[ http://issues.apache.org/jira/browse/MODPYTHON-172?
page=comments#action_12419728 ]
Harold Ship commented on MODPYTHON-172:
---------------------------------------
Please look at lines 202-205 of the same file, in parse_qs() :
PyObject *list;
list = Py_BuildValue("[O]", val);
PyDict_SetItem(dict, key, list);
Py_DECREF(list);
Memory leak with util.fieldstorage using mod_python 3.2.8 on
apache 2.0.55
---------------------------------------------------------------------
-----
Key: MODPYTHON-172
URL: http://issues.apache.org/jira/browse/MODPYTHON-172
Project: mod_python
Type: Bug
Components: core
Versions: 3.2.8
Environment: Win32 XP SP1 / SP2
Apache 2.0.55 installed from binary (.MSI)
Python 2.4.2 or 2.4.3 installed from binary from www.python.org
Reporter: Laurent Blanquet
I encounter memory leaks [~ 16 K per request) using the
configuration described below.
=============================
Python configuration from Httpd.conf:
=============================
Alias /python/ "d:/python24/B2B/"
<Directory "d:/python24/B2B">
AddHandler mod_python .py
PythonHandler pyHandlerHTTP
PythonDebug On
</Directory>
=============================
Test handler - pyHandlerHTTP.py :
=============================
import mod_python
from mod_python import util
def handler(req):
#Removing this line solves the problem.
F=util.FieldStorage( req )
return mod_python.apache.OK
=============================
HTTP Request (dump using TCPWATCH):
=============================
POST http://localhost:80/python/Alertes.py HTTP/1.0
Content-Type: multipart/form-data; boundary=--------061006144341906
Content-Length: 209
Proxy-Connection: keep-alive
Host: www.tx2-localhost
Accept: text/html, */*
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Proxy-Authorization: Basic Og==
----------061006144341906
Content-Disposition: form-data; name="TYPE"
LAST_ALERTS
----------061006144341906
Content-Disposition: form-data; name="FILEAGE"
180
----------061006144341906
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the
administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira