Re: (Benign ?) Libpq memory leak

From: Andres Freund <andres(at)anarazel(dot)de>
To: Michael Cress <michael(dot)cress(at)cress(dot)us>
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: (Benign ?) Libpq memory leak
Date: 2017-02-12 21:53:57
Message-ID: 20170212215357.ej6mhm3ajxmoiz3t@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,m

On 2017-02-12 21:40:11 +0000, Michael Cress wrote:
> I have noticed a memory leak in libpq. Running the following code from the context of a worker thread leaks 1024 bytes:
>
> const char conninfo[] = "dbname=testdb host=localhost user=testaccount password=password";
> PGconn *conn;
> PGresult *res;
> int nFields, i, j;
>
> printf("Opening connection to database\n");
> conn = PQconnectdb(conninfo);
>
> /* PQ statements used to be here but were removed when the leak was noticed. They executed fine and did not contribute to the leak. */
>
> printf("Closing connection to database\n");
> PQfinish(conn);

> ==19194== HEAP SUMMARY:
> ==19194== in use at exit: 5,324 bytes in 25 blocks
> ==19194== total heap usage: 33,714 allocs, 33,689 frees, 5,311,760 bytes allocated
> ==19194==
> ==19194== 40 bytes in 1 blocks are definitely lost in loss record 3 of 9
> ==19194== at 0x402E23C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
> ==19194== by 0x7DE3E42: ???
> ==19194== by 0x7DE4F5E: ???
> ==19194== by 0x7DDF577: ???
> ==19194== by 0x7DD0698: ???
> ==19194== by 0x7DD0EAA: ???
> ==19194== by 0x7DD184E: ???
> ==19194== by 0x42D6C18: ???
> <Redacted application call stack specific to application>
> ==19194==
> ==19194== 984 bytes in 1 blocks are definitely lost in loss record 8 of 9
> ==19194== at 0x402E23C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
> ==19194== by 0x7DE4BC3: ???
> ==19194== by 0x7DDF557: ???
> ==19194== by 0x7DD067E: ???
> ==19194== by 0x7DD0EAA: ???
> ==19194== by 0x7DD184E: ???
> ==19194== by 0x42D6C18: ???
> <Redacted application call stack specific to application>

Without libpq call-stack it's hard to make useful comments here. Could
you recompile with debugging symbols / install debugging symbols?

> The system environment is x86 running an up-to-date Ubuntu 16.10. The version of Postgresql installed is “9.5.5”. I have not performed any tests on other environments. This test was conducted against a development database containing data as well as a test database containing no data.

IIRC recent ubuntu version provide dbgsym packages in a separate
repository that you need to enable.

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message clive 2017-02-13 04:12:05 BUG #14542: 'readline' not found although it exists
Previous Message Michael Cress 2017-02-12 21:40:11 (Benign ?) Libpq memory leak