From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Pete Kay <petedao(at)gmail(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Problem with Memory Leak |
Date: | 2010-03-26 02:54:46 |
Message-ID: | 619.1269572086@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Pete Kay <petedao(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Tadipathri Raghu | 2010-03-26 03:03:55 | Re: How many Mandatory Process are there in Postgres |
Previous Message | Pete Kay | 2010-03-26 02:40:45 | Problem with Memory Leak |