[postgis-devel] running PostGIS on valgrind-enabled build /identifying memory issues

Sandro Santilli strk at kbt.io
Sat Feb 10 07:33:32 PST 2018


Tomas, since which versino does PostgreSQL have such built-in
valgrind support ? Would you feel like trying to add such build
option in the Dockerfile used by Drone to test PostGIS ?
https://git.osgeo.org/gitea/postgis/postgis-docker/src/branch/master/build-test

--strk;

On Sat, Feb 10, 2018 at 01:57:58PM +0100, Tomas Vondra wrote:
> Hi Brian,
> 
> On 02/10/2018 07:29 AM, Brian M Hamlin wrote:
> > Hi Tomas - 
> > 
> >    Using a current PostGIS 2.4 / Pg 10.2 / GEOS 3.6.2 on Ubuntu 1604
> > I built PostGIS using the CFLAGS you indicated, installed, then ran
> > valgrind make test. The log is not showing a lot of errors. I admit I
> > have not looked at your sample log.  
> >   Am I missing a step here?  best regards  --Brian
> >  
> > -- 
> > pgs_work$ ./configure --enable-debug --enable-cassert CFLAGS='-Og -ggdb3
> > -fno-omit-frame-pointer -DUSE_VALGRIND -DRANDOMIZE_ALLOCATED_MEMORY'
> > -- 
> > pgs_work$ valgrind --log-file=/tmp/pg1.log make check
> >  
> 
> I suspect the misunderstanding is that this only starts the "make" under
> valgrind, not the actual postgres backends. That would explain the lack
> of any reported issues in your case.
> 
> It also seems you only did the ./configure in postgis source tree.
> That's not enough, it's the PostgreSQL that needs to be built with
> valgrind support (it's built into the memory context/allocator code).
> 
> 
> Let me share more detailed instructions:
> 
> 1) build PostgreSQL with valgrind support
> 
>    git clone git://git.postgresql.org/git/postgresql.git postgres
> 
>    cd postgres
> 
>    # patch pg_ctl to start postgres under valgrind
>    # FIXME: modify the paths for suppress and log file
>    patch -p1 < pg_ctl.patch
> 
>    ./configure --enable-debug --enable-cassert --prefix=XYZ \
> 
>    CFLAGS='-Og -ggdb3 -fno-omit-frame-pointer -DUSE_VALGRIND \
>    -DRANDOMIZE_ALLOCATED_MEMORY'
> 
>    make install
> 
> 2) build postgis against the valgrind-enabled postgres build
> 
>    git clone https://git.osgeo.org/gitea/postgis/postgis.git postgis
> 
>    cd postgis
> 
>    # FIXME: tweak the path to include the prefix of postgres build
>    export PATH=XYZ:$PATH
> 
>    ./autogen.sh
> 
>    # no need to repeat the configure options (will be inherited from
>    # PostgreSQL build thanks to pg_config)
>    ./configure ...
> 
>    make install
> 
> 3) start PostgreSQL (will take a while, thanks to running in valgrind)
> 
>    pg_ctl -D ... init
>    pg_ctl -D ... start
> 
> 4) run "make check" in postgis
> 
> 
> Hope this helps in reproducing the valgrind reports.
> 
> I'm not sure how much this depends on valgrind version - I'm running
> 3.13.0 (the latest stable version) and I also tried running under custom
> build of the current master branch (essentially 3.13.0 + commits since
> July 2017). I get about the same results in both cases.
> 
> regards
> 
> -- 
> Tomas Vondra                  http://www.2ndQuadrant.com
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-devel


More information about the postgis-devel mailing list