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

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

From
Antonio Ospite <ao2@ao2.it>
Date
May 9, 2018, 13:28 UTC
Message-ID
<20180509132858.21936-1-ao2@ao2.it>
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.

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
Signed-off-by: Antonio Ospite <ao2@ao2.it>
---
 wrap-for-bin.sh | 4 ++++
 1 file changed, 4 insertions(+)
 mode change 100644 => 100755 wrap-for-bin.sh
diff --git a/wrap-for-bin.sh b/wrap-for-bin.sh
old mode 100644
new mode 100755
index 584240881..502d567bd
--- a/wrap-for-bin.sh
+++ b/wrap-for-bin.sh
@@ -24,6 +24,10 @@ if test -n "$GIT_TEST_GDB"
 then
 	unset GIT_TEST_GDB
 	exec gdb --args "${GIT_EXEC_PATH}/@@PROG@@" "$@"
+elif test -n "$GIT_TEST_VALGRIND"
+then
+	unset GIT_TEST_VALGRIND
+	exec valgrind $GIT_VALGRIND_OPTIONS "${GIT_EXEC_PATH}/@@PROG@@" "$@"
 else
 	exec "${GIT_EXEC_PATH}/@@PROG@@" "$@"
 fi
-- 
2.17.0
Next: Jeff King
Message 1 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.