Hi,
I am setting up a connection pooling obj to pool a bunch of
PGConnection object. That is why I am not closing the PGConn object
when the query is done.
Is that the right way to do it?
thanks,
Pete
On Fri, Mar 26, 2010 at 10:54 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Pete Kay <petedao@gmail.com> writes:
>> I am having memory leaking problem and here is the result shown from valgrind:
>
>> ==1706== 1,270 bytes in 5 blocks are still reachable in loss record 353 of 426
>> ==1706== at 0x4C20809: malloc (vg_replace_malloc.c:149)
>> ==1706== by 0x5D3F431: strdup (in /lib64/libc-2.5.so)
>> ==1706== by 0x109484E0: PQsendQuery (in /usr/lib64/libpq.so.5.2)
>
> Well, if that trace is to be believed, it must be talking about
> conn->last_query. Which will be freed when the connection is closed
> (ie PQfinish). It looks to me like you might need to pay more
> attention to closing things when you're done with them. The logic
> you quoted seems pretty full of holes: it's freeing the argument "sql"
> in only some code paths, it leaves connection_node->conn as a dangling
> non-null pointer in the bad-PQstatus path, it leaks non-last PGresults;
> and you haven't even shown us where the connection is supposed to get
> cleaned up in non-failure cases.
>
> regards, tom lane
>