Re: Help needed for the resolution of memory leak

From: Sasmit Utkarsh <utkarshsasmit(at)gmail(dot)com>
To: Merlin Moncure <mmoncure(at)gmail(dot)com>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Help needed for the resolution of memory leak
Date: 2024-01-17 07:22:12
Message-ID: CAM-5MT3a=Ua_eyeT7XBQ1pdxk0ZJDQaB9_1wi8fsG6Qbqdrt0A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thanks, I'll take a look.

Regards,
Sasmit Utkarsh
+91-7674022625

On Wed, Jan 17, 2024 at 4:12 AM Merlin Moncure <mmoncure(at)gmail(dot)com> wrote:

> On Tue, Jan 16, 2024 at 9:10 AM Sasmit Utkarsh <utkarshsasmit(at)gmail(dot)com>
> wrote:
>
>> Hi Merlin et al.
>>
>> I have tried to have the above change added in the missing places. Still,
>> I see the below leaks reported by the address sanitizer. Please see
>> the attachments for the leak reported and the function definition updated.
>> Not sure for PQexecPrepared if we call PQclear(res) for cleaning up as
>> well. let me know if you need any more information
>>
>
> You have many other leaks. See code below, you are making up to thee
> sequential calls to create a result before calling clear. *All *calls
> creating and returning returning PGresult have to be cleared before the
> pointer is reused.
>
> merlin
>
>
>
> LOG_DEBUG("%s() conninfo=%s",__func__,conninfo);
>
> if(is_shadow_db)
> {
> shadow_db_conn = PQconnectdb(shadow_db_conn_info);
> if ( PQstatus(shadow_db_conn ) != CONNECTION_OK )
> {
> LOG_ERROR("Connection to shadow database failed! %s", PQerrorMessage(conn));
> PQfinish(shadow_db_conn);
> exit(1);
> }
> *res *= PQexec(shadow_db_conn, "SET bytea_output = 'escape'");
> LOG_DEBUG("%s() Connection to shadow_shc_data database SUCCESSFUL",__func__);
> // execute_stored_procedure(shadow_db_conn);
> }
>
> conn = PQconnectdb(conninfo);
> if ( PQstatus(conn) != CONNECTION_OK ) {
> LOG_ERROR("Connection to database failed! %s", PQerrorMessage(conn));
> PQfinish(conn);
> exit(1);
> } else {
> *res =* PQexec(conn, "SET bytea_output = 'escape'");
> LOG_DEBUG("%s() Connection to shc_data database SUCCESSFUL",__func__);
> }
>
> *res *= PQexec(conn, "START TRANSACTION");
> if (PQresultStatus(res) != PGRES_COMMAND_OK)
> {
> LOG_ERROR("START TRANSACTION failed: %s", PQerrorMessage(conn));
> SQL_exit_nicely(conn,res);
> }
> PQclear(res);
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Laurenz Albe 2024-01-17 08:41:05 Re: Postgres Database Service Interruption
Previous Message Ron Johnson 2024-01-17 05:56:21 Re: WAL file clean up