[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