BUG #17184: When using openssl, the memory of a static variable is not freed in libpq

Started by PG Bug reporting formover 4 years ago5 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 17184
Logged by: Alexander Dzyuba
Email address: kaegoorn48@gmail.com
PostgreSQL version: 12.8
Operating system: Linux
Description:

Valgrind shows static variable memory is not freed when using openssl

libpq/fe-secure-openssl.c:1571

static BIO_METHOD *my_bio_methods;

Please add a method that will free memory after use

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #17184: When using openssl, the memory of a static variable is not freed in libpq

PG Bug reporting form <noreply@postgresql.org> writes:

Valgrind shows static variable memory is not freed when using openssl
libpq/fe-secure-openssl.c:1571
static BIO_METHOD *my_bio_methods;

Please add a method that will free memory after use

Why? It's not leaked: the struct is still available for use
in future connection attempts.

regards, tom lane

#3Alexander Dzuba
kaegoorn48@gmail.com
In reply to: Tom Lane (#2)
Re: BUG #17184: When using openssl, the memory of a static variable is not freed in libpq

I know that this is not the real leak, but memcheck analysis shows that the
memory was not released. Because of this, CI tests fail and deploy is
blocked.

ср, 8 сент. 2021 г. в 16:35, Tom Lane <tgl@sss.pgh.pa.us>:

Show quoted text

PG Bug reporting form <noreply@postgresql.org> writes:

Valgrind shows static variable memory is not freed when using openssl
libpq/fe-secure-openssl.c:1571
static BIO_METHOD *my_bio_methods;

Please add a method that will free memory after use

Why? It's not leaked: the struct is still available for use
in future connection attempts.

regards, tom lane

#4Michael Paquier
michael@paquier.xyz
In reply to: Alexander Dzuba (#3)
Re: BUG #17184: When using openssl, the memory of a static variable is not freed in libpq

On Thu, Sep 09, 2021 at 08:32:58AM +0300, Alexander Dzuba wrote:

I know that this is not the real leak, but memcheck analysis shows that the
memory was not released. Because of this, CI tests fail and deploy is
blocked.

Perhaps there is room for improvement in valgrind.supp then?
--
Michael

#5Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Michael Paquier (#4)
Re: BUG #17184: When using openssl, the memory of a static variable is not freed in libpq

At Fri, 10 Sep 2021 11:12:21 +0900, Michael Paquier <michael@paquier.xyz> wrote in

On Thu, Sep 09, 2021 at 08:32:58AM +0300, Alexander Dzuba wrote:

I know that this is not the real leak, but memcheck analysis shows that the
memory was not released. Because of this, CI tests fail and deploy is
blocked.

Perhaps there is room for improvement in valgrind.supp then?

If I specified '--leak-check=full --show-leak-kinds=reachable' (or
'all') for psql, I see many other complaints for the other than the
my_BIO_s_socket. And I saw two errors in my_BIO_s_socket.

So even if I tried to silence valgrind about the errors by inserting
something like the below into the file, still there are many other
errors.

{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: reachable
fun:malloc
...
fun:initialize_SSL
}

The following beats out all reachable errors come from malloc, realloc
and calloc (and any other *alloc's:p) but I don't think this is what
we want here...

{
<insert_a_suppression_name_here>
Memcheck:Leak
match-leak-kinds: reachable
fun:*alloc
}

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center