Code

Valgrind: Suppress a bogus invalid read on FreeBSD.
authorSebastian Harl <sh@tokkee.org>
Sat, 4 Jun 2016 20:21:48 +0000 (22:21 +0200)
committerSebastian Harl <sh@tokkee.org>
Sat, 4 Jun 2016 20:21:48 +0000 (22:21 +0200)
Valgrind reports an invalid read in common.c:parse_value. The error is
supposed to happen in strlen() on a just previously strdup()ed string.

Possibly, this is some sort of alignment issue. The read size is reported to
be 4 on a buffer of size 3.

https://bugzilla.redhat.com/show_bug.cgi?id=678518 may also be related.

src/valgrind.FreeBSD.suppress [new file with mode: 0644]
testwrapper.sh

diff --git a/src/valgrind.FreeBSD.suppress b/src/valgrind.FreeBSD.suppress
new file mode 100644 (file)
index 0000000..28ea677
--- /dev/null
@@ -0,0 +1,8 @@
+{
+   strlen_bogus_invalid_read_after_strdup
+   Memcheck:Addr4
+   fun:parse_value
+   fun:parse_values
+   fun:test_parse_values
+   fun:main
+}
index f8593a1196b2bc9237d7e329b3c24cb613c5641b..a86705fcb19f6a89565422d2d8d605c2484b2d5c 100755 (executable)
@@ -14,6 +14,14 @@ if test -n "$VALGRIND"; then
        MEMCHECK="$MEMCHECK --trace-children=yes"
        MEMCHECK="$MEMCHECK --leak-check=full"
        MEMCHECK="$MEMCHECK --gen-suppressions=all"
+
+       for f in "valgrind.$( uname -s ).suppress" "valgrind.suppress"; do
+               filename="$( dirname "$0" )/src/$f"
+               if test -e "$filename"; then
+                       # Valgrind supports up to 100 suppression files.
+                       MEMCHECK="$MEMCHECK --suppressions=$filename"
+               fi
+       done
 fi
 
 exec $MEMCHECK "$@"