From: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com> |
---|---|
To: | Michael Paquier <michael(at)paquier(dot)xyz> |
Cc: | Andrew Dunstan <andrew(at)dunslane(dot)net>, Andres Freund <andres(at)anarazel(dot)de>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: pgsql: Add TAP test for archive_cleanup_command and recovery_end_comman |
Date: | 2022-04-18 21:45:11 |
Message-ID: | CA+hUKGJYk56m7sycB4KhrEaYRnTYN-P3jYaXNbMGjsTicEHn6A@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
On Mon, Apr 18, 2022 at 11:49 AM Michael Paquier <michael(at)paquier(dot)xyz> wrote:
> On Sun, Apr 17, 2022 at 10:56:08AM -0400, Andrew Dunstan wrote:
> > I don't really think it's Cluster.pm's business to deal with that. It
> > takes an install path as given either explicitly or implicitly.
> >
> > It shouldn't be too hard to get Makefile.global to install valgrind
> > wrappers into the tmp_install/bin directory.
>
> Or what gets used in just a wrapper of the contents of bin/ that get
> enforced to be first in PATH?
Delayed response to the question on how I did that, because it was a 4
day weekend down here and I got distracted by sunshine...
A horrible slow way to do it is to build with -DUSE_VALGRIND and then
just run the whole process tree (eg make, perl, psql, ... and all)
under valgrind with --trace-children=yes:
tmunro(at)x1:~/projects/postgresql$ valgrind --quiet
--suppressions=`pwd`/src/tools/valgrind.supp --trace-children=yes
--track-origins=yes --run-libc-freeres=no --vgdb=no
--error-markers=VALGRINDERROR-BEGIN,VALGRINDERROR-END make -C
src/test/recovery/ check PROVE_TESTS=t/002_* PROVE_FLAGS=-v
I think that sort of thing actually worked when I tried it on a
beefier workstation, but it sent my Thinkpad that "only" has a 16GB of
RAM into some kind of death spiral. The way I succeeded was indeed
using a wrapper script, based on a suggestion from Andres, my
kludgy-hardcoded-path-assuming implementation of which looked like:
=== install-postgres-valgrind, to be run once after building ===
#!/bin/sh
SRC=$HOME/projects/postgresql
# move the real binary out of the way
mv $SRC/src/backend/postgres $SRC/src/backend/postgres.real
# install the wrapper, in the location it'll be copied from for tmp_install
cp postgres.valgrind $SRC/src/backend/postgres
===
=== postgres.valgrind wrapper script ===
#!/bin/sh
exec /usr/bin/valgrind \
--quiet \
--error-exitcode=128 \
--suppressions=$HOME/projects/postgresql/src/tools/valgrind.supp \
--trace-children=yes --track-origins=yes --read-var-info=no \
--leak-check=no \
--run-libc-freeres=no \
--vgdb=no \
--error-markers=VALGRINDERROR-BEGIN,VALGRINDERROR-END \
$HOME/projects/postgresql/src/backend/postgres.real \
"$@"
===
Then just:
make -C src/test/recovery/ check PROVE_TESTS=t/002_* PROVE_FLAGS=-v
Yeah, it might be quite neat to find a tool-supported way to do that.
Tangentially, I'd also like to look into making
PostgreSQL-under-Valgrind work on FreeBSD and macOS, which didn't work
last time I tried it for reasons that might, I hope, have been fixed
on the Valgrind side by now.
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2022-04-19 00:05:17 | pgsql: Add missing error handling in pg_md5_hash(). |
Previous Message | Andrew Dunstan | 2022-04-18 17:32:33 | Re: pgsql: Add TAP test for archive_cleanup_command and recovery_end_comman |
From | Date | Subject | |
---|---|---|---|
Next Message | Nathan Bossart | 2022-04-18 21:56:15 | Re: [Proposal] vacuumdb --schema only |
Previous Message | Simon Riggs | 2022-04-18 21:35:21 | Hash index build performance tweak from sorting |