Python interface memory leak?

Started by Stephen Robert Norrisover 24 years ago5 messagesgeneral
Jump to latest
#1Stephen Robert Norris
srn@commsecure.com.au

Does the python interface leak memory? We are seeing the process grow
with basically every select. Any suggestions on what's going on? There
are no cycles, and a trivial program (basically a loop around a select)
demonstrates the problem.

This is 7.1.2 on RH7.[01].

Stephen

#2Keary Suska
hierophant@pcisys.net
In reply to: Stephen Robert Norris (#1)
Re: Python interface memory leak?

Are you disposing the results of each select call? Not being familiar with
Python, as well as not knowing which interface for Python you are using, or
the code used to invoke the selects, I can only surmise that the result data
from each select is being stored in RAM and never garbage collected. At
least that could be responsible for significant memory jumps. For small
jumps, it could simply be the accumulation of multiple objects. So 1) you
may have to explicitly destroy result data and 2) you may need to ensure
that you are re-using the same object.

Without more info, any guess is as good as another.

Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"

Show quoted text

From: Stephen Robert Norris <srn@commsecure.com.au>
Date: 16 Oct 2001 22:00:35 +1000
To: pgsql-general@postgresql.org
Subject: [GENERAL] Python interface memory leak?

Does the python interface leak memory? We are seeing the process grow
with basically every select. Any suggestions on what's going on? There
are no cycles, and a trivial program (basically a loop around a select)
demonstrates the problem.

This is 7.1.2 on RH7.[01].

Stephen

#3Denis Gasparin
denis@edinet.it
In reply to: Stephen Robert Norris (#1)
Re: Python interface memory leak?

At 16/10/01 14.00, you wrote:

Does the python interface leak memory? We are seeing the process grow
with basically every select. Any suggestions on what's going on? There
are no cycles, and a trivial program (basically a loop around a select)
demonstrates the problem.

This is 7.1.2 on RH7.[01].

Stephen

The python interface stores query datas in memory. If you don't clean such
datas, the used memory will grow up...

If this is not the case, try the PoPy postgres driver for Python
(http://popy.sourgeforge.net or
http://freshmeat.net/redir/popy/8258/url_tgz/PoPy-2.0.7.tar.gz ).

Regards,

Doct. Eng. Denis
Gasparin denis@edistar.com
---------------------------------------------------------------------------------------
Programmer & System
Administrator http://www.edistar.com
---------------------------------------------------------------------------------------
Well alas we've seen it all before
Knights in armour, days of yore
The same old fears and the same old crimes
We haven't changed since ancient times

-- Iron Hand -- Dire Straits --
---------------------------------------------------------------------------------------

#4Stephen Robert Norris
srn@commsecure.com.au
In reply to: Denis Gasparin (#3)
Re: Python interface memory leak?

On Wed, 2001-10-17 at 16:56, Denis Gasparin wrote:

At 16/10/01 14.00, you wrote:

Does the python interface leak memory? We are seeing the process grow
with basically every select. Any suggestions on what's going on? There
are no cycles, and a trivial program (basically a loop around a select)
demonstrates the problem.

This is 7.1.2 on RH7.[01].

Stephen

The python interface stores query datas in memory. If you don't clean such
datas, the used memory will grow up...

Actually, it's a bug. I spent most of today with a co-worker looking for
it. There's a Py_DECREF missing in the fetch routine, which makes it
leak the results of every fetch. Who do I send the (one-line) fix to?

Stephen

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Stephen Robert Norris (#4)
Re: Python interface memory leak?

Stephen Robert Norris <srn@commsecure.com.au> writes:

Actually, it's a bug. I spent most of today with a co-worker looking for
it. There's a Py_DECREF missing in the fetch routine, which makes it
leak the results of every fetch. Who do I send the (one-line) fix to?

pgsql-patches list.

regards, tom lane