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

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

From
PG Bug reporting form
Date:
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


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



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>:
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
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

Attachment

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

From
Kyotaro Horiguchi
Date:
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