--- /dev/null
+# Suppression file for address sanitizer.
+
+# There are some leaks in command line option parsing. They should be
+# fixed at some point, but are harmless since the consume just a small,
+# constant amount of memory and do not grow.
+leak:fuse_opt_parse
+
+
+# Leaks in fusermount3 are harmless as well (it's a short-lived
+# process) - but patches are welcome!
+leak:fusermount.c
set -e
+# Disable leak checking for now, there are some issues (or false positives)
+# that we still need to fix
+export ASAN_OPTIONS="detect_leaks=0"
+
export CFLAGS="-Werror"
+export LSAN_OPTIONS="suppressions=$(pwd)/test/lsan_suppress.txt"
export CC
# Standard build
sudo chown root:root util/fusermount3
sudo chmod 4755 util/fusermount3
- ninja tests
+ TEST_WITH_VALGRIND=true ninja tests
cd ..
done
(cd build-$CC; sudo ninja install)
# Sanitized build
CC=clang
-for san in undefined; do
+for san in undefined address; do
mkdir build-${san}; cd build-${san}
# b_lundef=false is required to work around clang
# bug, cf. https://groups.google.com/forum/#!topic/mesonbuild/tgEdAXIIdC4
return pytest.mark.uses_fuse()
-# If valgrind is available, use it
-def has_program(name):
- try:
- ret = subprocess.call([name, '--version'],
- stdout=subprocess.DEVNULL,
- stderr=subprocess.DEVNULL)
- except FileNotFoundError:
- return False
- return ret == 0
-
-if has_program('valgrind'):
+# Use valgrind if requested
+if os.environ.get('TEST_WITH_VALGRIND', 'no').lower().strip() \
+ not in ('no', 'false', '0'):
base_cmdline = [ 'valgrind', '-q', '--' ]
else:
base_cmdline = []
-
# Try to use local fusermount3
os.environ['PATH'] = '%s:%s' % (pjoin(basename, 'util'), os.environ['PATH'])