git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] wrap-for-bin.sh: facilitate running Git executables under valgrind

From
Jeff King <peff@peff.net>
Date
May 9, 2018, 14:49 UTC
Message-ID
<20180509144958.GB14714@sigill.intra.peff.net>
In-Reply-To
<20180509132858.21936-1-ao2@ao2.it>
On Wed, May 09, 2018 at 03:28:58PM +0200, Antonio Ospite wrote:
Show 20 quoted lines
> Testing locally built git executables under valgrind is not immediate.
> 
> Something like the following does not work:
> 
>   $ valgrind ./bin-wrappers/git
> 
> because the wrapper script forks and execs the command and valgrind does
> not track children processes by default.
> 
> Something like the following may work:
> 
>   $ valgrind --trace-children=yes ./bin-wrappers/git
> 
> However it's counterintuitive and not ideal anyways because valgrind is
> supposed to be called on the actual executable, not on wrapper scripts.
> 
> So, following the idea from commit 6a94088cc ("test: facilitate
> debugging Git executables in tests with gdb", 2015-10-30) provide
> a mechanism in the wrapper script to call valgrind directly on the
> actual executable.

Unfortunately this isn't quite enough to get full valgrind coverage, because Git often execs sub-processes of itself (and for anything that isn't a builtin, all you're checking is the outer "git" process which dispatches to "git-foo").

Show 6 quoted lines
> This mechanism could even be used by the test infrastructure in the
> future, but it is already useful by its own on the command line:
> 
>   $ GIT_TEST_VALGRIND=1 \
>     GIT_VALGRIND_OPTIONS="--leak-check=full" \
>     ./bin-wrappers/git

If you look in t/test-lib.sh, you can see the contortions the test infrastructure goes through to support --valgrind. Basically it creates a parallel bin-wrappers directory where everything gets run under valgrind. ;)

So I dunno. I'm not opposed to this patch in principle if people find it useful. These days _most_ things are builtins, so it would at least cover most of the code you'd want to hit for a debugging session, as long as you're not concerned with full coverage. But I don't think it's the right approach for instrumenting the test suite.

-Peff
Previous: Antonio OspiteNext: Elijah Newren
Message 2 of 4 in “wrap-for-bin.sh: facilitate running Git executables under valgrind”
  1. wrap-for-bin.sh: facilitate running Git executables under valgrindAntonio Ospite, May 9, 2018
  2. Jeff KingMay 9, 2018
  3. Elijah NewrenMay 9, 2018
  4. Antonio OspiteMay 9, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.