Memory growth observed with C++ application consuming libpq.dll on Windows

2024-08-01 Thread Rajesh Kokkonda
Hi,

We are seeing a gradual growth in the memory consumption of our process on
Windows. Ours is a C++ application that directly loads libpq.dll and
handles the queries and functions. We use setSingleRowMethod to limit the
number of rows returned simultaneously to the application. We do not
observe any memory increase when the application is run on Linux. There is
no code difference between Windows and Linux from the
application standpoint. We ran valgrind against our application on Linux
and found no memory leaks. Since the same code is being used on Windows as
well, we do not suspect any memory leak there.  The question is if there
are any known memory leaks with the version of the library we are using on
Windows. Kindly let us know.

The version of the library on Linux is libpq.so.5.16

The windows version of the library is 16.0.3.0


[image: image.png]

Thanks,
Rajesh


Re: Memory growth observed with C++ application consuming libpq.dll on Windows

2024-08-02 Thread Rajesh Kokkonda
Hi Yasir,

Are you looking for a fully functional sample program or only the APIs from
libpq library that our product uses? I am asking this because if the
requirement is to have a sample code, then I will have to work on creating
one on the same lines as our product.

Rajesh

On Thu, Aug 1, 2024 at 5:27 PM Yasir  wrote:

> Hi Rajesh,
>
> Can you please attach a sample code snippet showing libpq's functions
> being called? It will help to identify the libpq's functions to investigate
> further for a potential mem leak.
>
> Regards...
>
> Yasir Hussain
>
> On Thu, Aug 1, 2024 at 4:30 PM Rajesh Kokkonda 
> wrote:
>
>> Hi,
>>
>> We are seeing a gradual growth in the memory consumption of our process
>> on Windows. Ours is a C++ application that directly loads libpq.dll and
>> handles the queries and functions. We use setSingleRowMethod to limit the
>> number of rows returned simultaneously to the application. We do not
>> observe any memory increase when the application is run on Linux. There is
>> no code difference between Windows and Linux from the
>> application standpoint. We ran valgrind against our application on Linux
>> and found no memory leaks. Since the same code is being used on Windows as
>> well, we do not suspect any memory leak there.  The question is if there
>> are any known memory leaks with the version of the library we are using on
>> Windows. Kindly let us know.
>>
>> The version of the library on Linux is libpq.so.5.16
>>
>> The windows version of the library is 16.0.3.0
>>
>>
>> [image: image.png]
>>
>> Thanks,
>> Rajesh
>>
>


Re: Memory growth observed with C++ application consuming libpq.dll on Windows

2024-08-02 Thread Rajesh Kokkonda
Okay. I will try to create one sample program and send it to you sometime
next week. In the meantime, I am listing down all the methods we are
consuming from libpq.

PQconnectdbParams
PQstatus
PQerrorMessage
PQpingParams
PQfinish
PQresultStatus
PQclear
PQsetSingleRowMode
PQntuples
PQnfields
PQftype
PQgetvalue
PQgetlength
PQgetisnull
PQgetCancel
PQfreeCancel
PQcancel
PQsetErrorVerbosity
PQsendPrepare
PQsendQueryPrepared
PQgetResult
PQconsumeInput
PQisBusy
PQsetnonblocking
PQflush
PQsocket
PQtransactionStatus
PQresultErrorField

Regards,
Rajesh

On Fri, Aug 2, 2024 at 5:06 PM Yasir  wrote:

>
> On Fri, Aug 2, 2024 at 1:53 PM Rajesh Kokkonda 
> wrote:
>
>> Hi Yasir,
>>
>> Are you looking for a fully functional sample program or only the APIs
>> from libpq library that our product uses? I am asking this because if the
>> requirement is to have a sample code, then I will have to work on creating
>> one on the same lines as our product.
>>
>>
> A functional sample is always best and preferred, however, only APIs used
> by your product would also be sufficient.
>
> Rajesh
>>
>> On Thu, Aug 1, 2024 at 5:27 PM Yasir 
>> wrote:
>>
>>> Hi Rajesh,
>>>
>>> Can you please attach a sample code snippet showing libpq's functions
>>> being called? It will help to identify the libpq's functions to investigate
>>> further for a potential mem leak.
>>>
>>> Regards...
>>>
>>> Yasir Hussain
>>>
>>> On Thu, Aug 1, 2024 at 4:30 PM Rajesh Kokkonda <
>>> rajeshk.kokko...@gmail.com> wrote:
>>>
>>>> Hi,
>>>>
>>>> We are seeing a gradual growth in the memory consumption of our process
>>>> on Windows. Ours is a C++ application that directly loads libpq.dll and
>>>> handles the queries and functions. We use setSingleRowMethod to limit the
>>>> number of rows returned simultaneously to the application. We do not
>>>> observe any memory increase when the application is run on Linux. There is
>>>> no code difference between Windows and Linux from the
>>>> application standpoint. We ran valgrind against our application on Linux
>>>> and found no memory leaks. Since the same code is being used on Windows as
>>>> well, we do not suspect any memory leak there.  The question is if there
>>>> are any known memory leaks with the version of the library we are using on
>>>> Windows. Kindly let us know.
>>>>
>>>> The version of the library on Linux is libpq.so.5.16
>>>>
>>>> The windows version of the library is 16.0.3.0
>>>>
>>>>
>>>> [image: image.png]
>>>>
>>>> Thanks,
>>>> Rajesh
>>>>
>>>


Re: Memory growth observed with C++ application consuming libpq.dll on Windows

2024-08-02 Thread Rajesh Kokkonda
We did run our application under valgrind on Linux. We did not see any
leaks. There is no platform dependent code in our application. We are
seeing gradual memory growth only on windows.

That is what lead me to believe the leak may be present in postgresql. I
will run under available memory tools on windows and get back to you.

I will also try to create a sample and see if I can reproduce the problem.

Thanks,
Rajesh

On Fri, 2 Aug 2024, 21:45 Ranier Vilela,  wrote:

> Em sex., 2 de ago. de 2024 às 11:54, Rajesh Kokkonda <
> rajeshk.kokko...@gmail.com> escreveu:
>
>> Okay. I will try to create one sample program and send it to you sometime
>> next week. In the meantime, I am listing down all the methods we are
>> consuming from libpq.
>>
>> PQconnectdbParams
>> PQstatus
>> PQerrorMessage
>> PQpingParams
>> PQfinish
>> PQresultStatus
>> PQclear
>> PQsetSingleRowMode
>> PQntuples
>> PQnfields
>> PQftype
>> PQgetvalue
>> PQgetlength
>> PQgetisnull
>> PQgetCancel
>> PQfreeCancel
>> PQcancel
>> PQsetErrorVerbosity
>> PQsendPrepare
>> PQsendQueryPrepared
>> PQgetResult
>> PQconsumeInput
>> PQisBusy
>> PQsetnonblocking
>> PQflush
>> PQsocket
>> PQtransactionStatus
>> PQresultErrorField
>>
>> It is highly likely that the memory consumption is caused by your
> application.
> Perhaps due to the lack of freeing up the resources used by the library.
> You can try using this tool, to find out the root cause.
>
> https://drmemory.org/
>
> best regards,
> Ranier Vilela
>


Re: Memory growth observed with C++ application consuming libpq.dll on Windows

2024-08-06 Thread Rajesh Kokkonda
I ran a trial version of a memory leak detector called Deleaker on windows
and found some modules that are listed as having leaks. I  ran the program
on Linux under valgrind and I do not see any leaks reported there. I have
attached the reported leaks on windows as windows_leaks.txt and valgrind
summary report as valgrind.txt.

I am working on generating a trimmed down version of the sample program to
share with you.  Let me know if you have any questions.

Thanks,
Rajesh

On Fri, Aug 2, 2024 at 10:19 PM Rajesh Kokkonda 
wrote:

> We did run our application under valgrind on Linux. We did not see any
> leaks. There is no platform dependent code in our application. We are
> seeing gradual memory growth only on windows.
>
> That is what lead me to believe the leak may be present in postgresql. I
> will run under available memory tools on windows and get back to you.
>
> I will also try to create a sample and see if I can reproduce the problem.
>
> Thanks,
> Rajesh
>
> On Fri, 2 Aug 2024, 21:45 Ranier Vilela,  wrote:
>
>> Em sex., 2 de ago. de 2024 às 11:54, Rajesh Kokkonda <
>> rajeshk.kokko...@gmail.com> escreveu:
>>
>>> Okay. I will try to create one sample program and send it to you
>>> sometime next week. In the meantime, I am listing down all the methods we
>>> are consuming from libpq.
>>>
>>> PQconnectdbParams
>>> PQstatus
>>> PQerrorMessage
>>> PQpingParams
>>> PQfinish
>>> PQresultStatus
>>> PQclear
>>> PQsetSingleRowMode
>>> PQntuples
>>> PQnfields
>>> PQftype
>>> PQgetvalue
>>> PQgetlength
>>> PQgetisnull
>>> PQgetCancel
>>> PQfreeCancel
>>> PQcancel
>>> PQsetErrorVerbosity
>>> PQsendPrepare
>>> PQsendQueryPrepared
>>> PQgetResult
>>> PQconsumeInput
>>> PQisBusy
>>> PQsetnonblocking
>>> PQflush
>>> PQsocket
>>> PQtransactionStatus
>>> PQresultErrorField
>>>
>>> It is highly likely that the memory consumption is caused by your
>> application.
>> Perhaps due to the lack of freeing up the resources used by the library.
>> You can try using this tool, to find out the root cause.
>>
>> https://drmemory.org/
>>
>> best regards,
>> Ranier Vilela
>>
>
==1659429== LEAK SUMMARY:
==1659429==definitely lost: 0 bytes in 0 blocks
==1659429==indirectly lost: 0 bytes in 0 blocks
==1659429==  possibly lost: 0 bytes in 0 blocks
==1659429==still reachable: 36,482 bytes in 121 blocks
==1659429==   of which reachable via heuristic:
==1659429== stdstring  : 537 bytes in 1 blocks
==1659429== suppressed: 0 bytes in 0 blocks
==1659429==
==1659429== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)