From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH 1/2] Add valgrind support in test scripts
Date: Wed, 21 Jan 2009 01:41:13 +0100 (CET) [thread overview]
Message-ID: <alpine.DEB.1.00.0901210130030.19014@racer> (raw)
In-Reply-To: <20090121001219.GA18169@coredump.intra.peff.net>
Hi,
On Tue, 20 Jan 2009, Jeff King wrote:
> On Tue, Jan 20, 2009 at 04:04:28PM +0100, Johannes Schindelin wrote:
>
> > +else
> > + # override all git executables in PATH and TEST_DIRECTORY/..
> > + GIT_VALGRIND=$TEST_DIRECTORY/valgrind
> > + mkdir -p "$GIT_VALGRIND"
>
> Isn't this mkdir unnecessary, since it is actually part of the
> repository (i.e., there is a gitignore there already).
>
> However, I think it makes more sense to put the symlink cruft into
> "$GIT_VALGRIND/bin". That way you can clean up the cruft very easily. In
> which case you do need to "mkdir" that directory.
Hmm. I actually liked the hierarchy to be shallow, but I could be
convinced...
> > + OLDIFS=$IFS
> > + IFS=:
> > + for path in $PATH:$TEST_DIRECTORY/..
> > + do
> > + ls "$TEST_DIRECTORY"/../git "$path"/git-* 2> /dev/null |
>
> Why aren't these both "$path"/ ?
Yeah. Makes it more readable, doesn't it?
> But more importantly, do we really need to bother overriding the whole
> $PATH? In theory, we aren't calling anything git-* that isn't in
> "$TEST_DIRECTORY/..". And while it might be nice to catch it if we do,
> it seems like detecting that is totally orthogonal to running valgrind,
> and we get different behavior from valgrind versus not. And I think the
> two should be as similar as possible (with the obvious except of
> actually, you know, running valgrind).
Actually, the two _are_ orthogonal from the technical viewpoint.
But with the infrastructure we have in place, it was already very easy to
make sure that calls to a Git program we no longer ship are caught.
I vividly remember such a bug costing me 3 hours of my life, and a few
hairs.
So I think "as it's already _that_ easy, we should catch them bugs, too".
Needs some documentation though, I agree.
> > + base=$(basename "$file")
> > + test ! -h "$GIT_VALGRIND"/"$base" || continue
> > +
> > + if test "#!" = "$(head -c 2 < "$file")"
> > + then
> > + # do not override scripts
> > + ln -s ../../"$base" "$GIT_VALGRIND"/"$base"
> > + else
> > + ln -s valgrind.sh "$GIT_VALGRIND"/"$base"
> > + fi
>
> It would be nice to actually detect errors. But you have to
> differentiate between EEXIST and other errors, which is a pain. And you
> can't use "ln -sf" because it isn't atomic.
I really would not care all that much about that.
'GIT_TEST_OPTS==--valgrind make test' should be run by experts. And even
if it is a dummy driving the test, the next "make" call should take care
of that.
> Copying would solve that (provided you copied to a tempfile and did
> an atomic rename). Or writing this snippet as a C helper.
Nah, that is really too much work for such a rare thing. Think about it.
The symlinks are set up once. And even if you do that with -j50, there is
hardly a chance that two processes conflict with each other, and even if
they do, they do the same thing.
No, what I really want to fix is a script being replaced by a binary.
> > --- /dev/null
> > +++ b/t/valgrind/valgrind.sh
> > @@ -0,0 +1,12 @@
> > +#!/bin/sh
> > +
> > +base=$(basename "$0")
> > +
> > +exec valgrind -q --error-exitcode=126 \
> > + --leak-check=no \
> > + --suppressions="$GIT_VALGRIND/default.supp" \
> > + --gen-suppressions=all \
> > + --log-fd=4 \
> > + --input-fd=4 \
> > + $GIT_VALGRIND_OPTIONS \
> > + "$GIT_VALGRIND"/../../"$base" "$@"
>
> Hm. My version had to do some magic with the GIT_EXEC_PATH, but I think
> that is because I didn't set GIT_EXEC_PATH in the first place. If yours
> works (and I haven't really tested it -- I remember it being a real pain
> in the butt to make sure valgrind was getting called from every code
> path), then I like your approach much better.
I set GIT_EXEC_PATH... to $GIT_VALGRIND.
Ciao,
Dscho
next prev parent reply other threads:[~2009-01-21 0:42 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-19 9:13 What's cooking in git.git (Jan 2009, #04; Mon, 19) Junio C Hamano
2009-01-19 11:54 ` Kjetil Barvik
2009-01-19 13:09 ` Johannes Schindelin
2009-01-19 13:08 ` Johannes Schindelin
2009-01-20 4:44 ` Jeff King
2009-01-20 13:51 ` valgrind patches, was " Johannes Schindelin
2009-01-20 14:19 ` Jeff King
2009-01-20 14:50 ` Johannes Schindelin
2009-01-20 15:04 ` [PATCH 1/2] Add valgrind support in test scripts Johannes Schindelin
2009-01-20 15:05 ` [PATCH 2/2] valgrind: ignore ldso errors Johannes Schindelin
2009-01-21 0:12 ` [PATCH 1/2] Add valgrind support in test scripts Jeff King
2009-01-21 0:41 ` Johannes Schindelin [this message]
2009-01-21 1:10 ` [PATCH 1/2 v2] " Johannes Schindelin
2009-01-21 1:11 ` [INTERDIFF of PATCH " Johannes Schindelin
2009-01-21 8:48 ` [PATCH " Junio C Hamano
2009-01-21 12:21 ` Johannes Schindelin
2009-01-21 19:02 ` Jeff King
2009-01-21 20:49 ` Johannes Schindelin
2009-01-21 21:53 ` Jeff King
2009-01-21 22:38 ` Johannes Schindelin
2009-01-25 23:18 ` [PATCH 0/3] Valgrind support Johannes Schindelin
2009-01-25 23:18 ` [PATCH v3 1/3] Add valgrind support in test scripts Johannes Schindelin
2009-01-25 23:29 ` Jeff King
2009-01-25 23:35 ` Johannes Schindelin
2009-01-25 23:42 ` Jeff King
2009-01-25 23:19 ` [PATCH v3 2/3] valgrind: ignore ldso and more libz errors Johannes Schindelin
2009-01-25 23:32 ` Jeff King
2009-01-26 0:02 ` Johannes Schindelin
2009-01-26 0:14 ` Jeff King
2009-01-25 23:20 ` [PATCH 3/3] Valgrind support: check for more than just programming errors Johannes Schindelin
2009-01-25 23:42 ` Jeff King
2009-01-26 0:43 ` Johannes Schindelin
2009-01-21 22:31 ` [PATCH] valgrind tests: be super-super paranoid when creating symlinks Johannes Schindelin
2009-01-20 23:24 ` valgrind patches, was Re: What's cooking in git.git (Jan 2009, #04; Mon, 19) Jeff King
2009-01-21 0:10 ` Johannes Schindelin
2009-01-21 0:15 ` Jeff King
2009-01-21 0:28 ` Johannes Schindelin
2009-01-21 0:37 ` Jeff King
2009-01-21 1:26 ` Johannes Schindelin
2009-01-21 1:36 ` [PATCH 2/2 v2] valgrind: ignore ldso errors Johannes Schindelin
2009-01-21 19:09 ` Jeff King
2009-01-21 20:51 ` Johannes Schindelin
2009-01-21 19:07 ` valgrind patches, was Re: What's cooking in git.git (Jan 2009, #04; Mon, 19) Jeff King
2009-01-21 22:17 ` Johannes Schindelin
2009-01-21 23:57 ` Jeff King
2009-01-22 0:42 ` Junio C Hamano
2009-01-22 0:59 ` Jeff King
2009-01-22 5:02 ` Johannes Schindelin
2009-01-22 5:39 ` Jeff King
2009-01-27 2:50 ` Valgrind updates Johannes Schindelin
2009-01-27 3:38 ` Linus Torvalds
2009-01-27 4:26 ` Johannes Schindelin
2009-01-27 4:46 ` Johannes Schindelin
2009-01-27 13:14 ` Mark Brown
2009-01-27 16:54 ` Johannes Schindelin
2009-01-27 18:55 ` Linus Torvalds
2009-01-27 21:52 ` Johannes Schindelin
2009-01-29 1:56 ` Linus Torvalds
2009-01-29 14:22 ` Johannes Schindelin
2009-01-28 23:06 ` Mark Adler
2009-01-28 23:27 ` Johannes Schindelin
2009-01-29 0:15 ` Mark Adler
2009-01-29 14:14 ` Johannes Schindelin
2009-01-29 14:54 ` Johannes Schindelin
2009-01-27 4:48 ` Jeff King
2009-01-27 9:31 ` Johannes Schindelin
2009-01-20 4:30 ` What's cooking in git.git (Jan 2009, #04; Mon, 19) Jeff King
2009-01-20 4:40 ` Jeff King
2009-01-20 7:04 ` Junio C Hamano
2009-01-20 7:55 ` Johannes Sixt
2009-01-20 14:18 ` Jeff King
2009-01-20 5:17 ` Boyd Stephen Smith Jr.
2009-01-20 8:57 ` Thomas Rast
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.1.00.0901210130030.19014@racer \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox