Apache Mod-Python - Memory leak in req.readlines() ????

This is Interesting: Free IT Magazines  
Home > Archive > Apache Mod-Python > January 2007 > Memory leak in req.readlines() ????





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Memory leak in req.readlines() ????
Graham Dumpleton

2007-01-12, 1:13 am

This code in req.readlines() looks a bit fishy to me and possibly leaks memory.
The code in question is:

rlargs = PyTuple_New(0);
if (result == NULL)
return PyErr_NoMemory();

line = req_readline(self, rlargs);
while (line && ((linesize=PyString_Size(line))>0)) {
PyList_Append(result, line);
size += linesize;
if ((sizehint != -1) && (size >= sizehint))
break;
Py_DECREF(line);
line = req_readline(self, args);
}
Py_XDECREF(line);

The thing that looks wrong is 'rlargs'. This is created, used in a sub call to
req_readline() but then never destroyed. Thus, possibly a memory leak.

Next thing is that on the first read of a line, ie., call to req_readline(),
there will be no limit on size, as rlargs (empty tuple) is used. On subsequent
calls to req_readline() it passed the args from the caller instead of rlargs.
Depending on how req_readline() is implemented, this may not work
how want might think it might. Will need to investigate further.

Graham


Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com