]> git.pond.sub.org Git - empserver/commitdiff
tests: Enable GNU libc memory allocation error checking
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 27 Sep 2015 07:56:21 +0000 (09:56 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 5 Dec 2015 12:03:08 +0000 (13:03 +0100)
MALLOC_CHECK_=3 makes glibc check for memory allocation programming
errors.  It's the factory default, but set it anyway just in case
someone disabled it for speed.

Non-zero MALLOC_PERTURB_ makes glibc wipe memory value on allocation
and deallocation.  The actual value determines the bit pattern.  Set
it to the value of environment variable EMPIRE_CHECK_MALLOC_PERTURB or
else a pseudo-random number, and record it in sandbox/malloc-perturb.

See mallopt(3) for more information.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
tests/test-common.sh

index f54ba4521e0b93a965030dff40b79e29e26a8b19..7d14039984bee39e6a1e4c06c4214d3144e89132 100644 (file)
@@ -20,6 +20,11 @@ empdump="src/util/empdump -e $econfig"
 files="src/util/files -e $econfig"
 fairland="src/util/fairland -e $econfig"
 
+# GNU libc memory allocation checking, see mallopt(3)
+# $RANDOM isn't portable
+malloc_perturb=${EMPIRE_CHECK_MALLOC_PERTURB:-$(perl -e 'print int(rand(255))')}
+env="MALLOC_CHECK_=3 MALLOC_PERTURB_=$malloc_perturb"
+
 empthread=`sed -n 's/empthread *:= *\(.*\)/\1/p' <GNUmakefile`
 warn_empthread=y
 
@@ -36,6 +41,7 @@ create_sandbox()
 {
     rm -rf sandbox
     mkdir -p sandbox/etc/empire sandbox/share/empire/builtin $data
+    echo $malloc_perturb >sandbox/malloc-perturb
     touch $schedule
     cat >$econfig <<EOF
 data "../../var/empire"
@@ -94,7 +100,7 @@ run()
     local name=$1 ret
     shift
     set +e
-    "$@" >>sandbox/$name.out 2>>sandbox/$name.err
+    env $env "$@" >>sandbox/$name.out 2>>sandbox/$name.err
     ret=$?
     set -e
     echo $ret >>sandbox/$name.status
@@ -126,7 +132,7 @@ start_server()
     check_empthread
 
     pid=
-    src/server/emp_server -e $econfig -R 1 -s -E crash-dump
+    env $env src/server/emp_server -e $econfig -R 1 -s -E crash-dump
     timeout=$((`now`+5))
     until pid=`cat $pidfile 2>/dev/null` && [ -n "$pid" ]
     do