summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-07-10 13:24:35 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-07-10 17:02:27 (GMT)
commitd0cc5796f35941d5a6ccd05146911f102bed57c4 (patch)
tree55134214079adc31f578a74048e3f9e78af4e2a1 /t
parent8c8e978f5719c6a58fb998742207bf907f963143 (diff)
downloadgit-d0cc5796f35941d5a6ccd05146911f102bed57c4.zip
git-d0cc5796f35941d5a6ccd05146911f102bed57c4.tar.gz
git-d0cc5796f35941d5a6ccd05146911f102bed57c4.tar.bz2
test-lib: set ASAN_OPTIONS variable before we run git
We turn off ASan's leak detection by default in the test suite because it's too noisy. But we don't do so until part-way through test-lib. This is before we've run any tests, but after we do our initial "./git" to see if the binary has even been built. When built with clang, this seems to work fine. However, using "gcc -fsanitize=address", the leak checker seems to complain more aggressively: $ ./git ... ==5352==ERROR: LeakSanitizer: detected memory leaks Direct leak of 2 byte(s) in 1 object(s) allocated from: #0 0x7f120e7afcf8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc1cf8) #1 0x559fc2a3ce41 in do_xmalloc /home/peff/compile/git/wrapper.c:60 #2 0x559fc2a3cf1a in do_xmallocz /home/peff/compile/git/wrapper.c:100 #3 0x559fc2a3d0ad in xmallocz /home/peff/compile/git/wrapper.c:108 #4 0x559fc2a3d0ad in xmemdupz /home/peff/compile/git/wrapper.c:124 #5 0x559fc2a3d0ad in xstrndup /home/peff/compile/git/wrapper.c:130 #6 0x559fc274535a in main /home/peff/compile/git/common-main.c:39 #7 0x7f120dabd2b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0) This is a leak in the sense that we never free it, but it's in a global that is meant to last the whole program. So it's not really interesting or in need of fixing. And at any rate, mentioning leaks outside of the test_expect blocks is certainly unwelcome, as it pollutes stderr. Let's bump the setting of ASAN_OPTIONS higher in test-lib.sh to catch our initial "can we even run git?" test. While we're at it, we can add a comment to make it a bit less inscrutable. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rw-r--r--t/test-lib.sh11
1 files changed, 8 insertions, 3 deletions
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 30eb743..c42791e 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -36,6 +36,14 @@ then
fi
GIT_BUILD_DIR="$TEST_DIRECTORY"/..
+# If we were built with ASAN, it may complain about leaks
+# of program-lifetime variables. Disable it by default to lower
+# the noise level. This needs to happen at the start of the script,
+# before we even do our "did we build git yet" check (since we don't
+# want that one to complain to stderr).
+: ${ASAN_OPTIONS=detect_leaks=0}
+export ASAN_OPTIONS
+
################################################################
# It appears that people try to run tests without building...
"$GIT_BUILD_DIR/git" >/dev/null
@@ -148,9 +156,6 @@ else
}
fi
-: ${ASAN_OPTIONS=detect_leaks=0}
-export ASAN_OPTIONS
-
# Protect ourselves from common misconfiguration to export
# CDPATH into the environment
unset CDPATH