Re: Valgrind mem-check for postgres extension

From: Natarajan R <nataraj3098(at)gmail(dot)com>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Valgrind mem-check for postgres extension
Date: 2022-05-20 04:14:07
Message-ID: CAPqxBt7C_SsenrvhmpMb=Np=WY7S7_xtuiSqSpT_yJQmcnC7ZA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

>> I have few doubts in here,
>> 1. When I run with *--leak-check=full*, I get memory leaks for postgres
>> functions under possibly or definitely lost categories.. Is this
expected?

> Maybe ... you did not show your test case, so it's hard to say. But it
> could well be that this is an artifact of failing to define USE_VALGRIND

I did not run any test, just simply started the plain postgres(my extension
not installed) with valgrind(command given below)..

> *valgrind --leak-check=full --suppressions=src/tools/valgrind.supp
> --time-stamp=yes --error-markers=VALGRINDERROR-BEGIN,VALGRINDERROR-END
> --trace-children=yes --log-file=pg_valgrind/pg-valgrind_%p.log postgres -D
> data*

>> 3. I have seen some macros for valgrind support within postgres source
code
>> under utils/memdebug.h, but couldn't get complete idea of using it from
the
>> comments in pg_config_manual.h under *USE_VALGRIND *macro, pls provide
some
>> guidance here..

> If you didn't build the core code with USE_VALGRIND defined, then none of
> this stuff is going to work ideally.

> The way I like to do it is to run configure, and then manually add
> "#define USE_VALGRIND" to the generated src/include/pg_config.h
> file before invoking "make". Probably other people have different
> habits.

I tried the things like you said
1. Pg configured already, so #define USE_VALGRIND in src/include/pg_config.h
2. make, make install
3. started pg with valgrind(same command mentioned above)..
Now, memory leaks are being reported for palloc, malloc, MemoryContextAlloc
functions..(sample image from a valgrind report for a process attached).
I couldn't specify from which process, this was generated.. as the valgrind
provide pid alone..

[image: image.png]

In an overview, I am trying to test a memory leak for my extension, correct
me if i am doing it the wrong way..

Regards,
Natarajan R

On Wed, 18 May 2022 at 21:38, Andrew Dunstan <andrew(at)dunslane(dot)net> wrote:

>
> On 2022-05-18 We 01:12, Tom Lane wrote:
> > Natarajan R <nataraj3098(at)gmail(dot)com> writes:
> >> I have few doubts in here,
> >> 1. When I run with *--leak-check=full*, I get memory leaks for postgres
> >> functions under possibly or definitely lost categories.. Is this
> expected?
> > Maybe ... you did not show your test case, so it's hard to say. But it
> > could well be that this is an artifact of failing to define USE_VALGRIND.
> >
> >> 2. Is there any other way to test my extension memory leaks alone,
> because
> >> combining with postgres leaks is making instrumentation complex?..
> > No, not really.
> >
> >> 3. I have seen some macros for valgrind support within postgres source
> code
> >> under utils/memdebug.h, but couldn't get complete idea of using it from
> the
> >> comments in pg_config_manual.h under *USE_VALGRIND *macro, pls provide
> some
> >> guidance here..
> > If you didn't build the core code with USE_VALGRIND defined, then none of
> > this stuff is going to work ideally.
> >
> > The way I like to do it is to run configure, and then manually add
> > "#define USE_VALGRIND" to the generated src/include/pg_config.h
> > file before invoking "make". Probably other people have different
> > habits.
>
>
> The standard buildfarm config uses these for valgrind builds:
>
> CFLAGS => "-fno-omit-frame-pointer -O0 -fPIC",
> CPPFLAGS => "-DUSE_VALGRIND -DRELCACHE_FORCE_RELEASE",
>
> cheers
>
>
> andrew
>
> --
> Andrew Dunstan
> EDB: https://www.enterprisedb.com
>
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2022-05-20 04:22:14 Re: 15beta1 test failure on mips in isolation/expected/stats
Previous Message Kyotaro Horiguchi 2022-05-20 04:12:09 Re: 15beta1 test failure on mips in isolation/expected/stats