From 81263bc94cd4e0dc4893620abccdecdd9d3ac451 Mon Sep 17 00:00:00 2001 From: Love Hornquist Astrand Date: Wed, 24 Apr 2013 17:59:25 -0700 Subject: [PATCH] update leaks check --- tests/kdc/leaks-kill.sh | 47 ++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/tests/kdc/leaks-kill.sh b/tests/kdc/leaks-kill.sh index e67d274f5..ce9c3d011 100644 --- a/tests/kdc/leaks-kill.sh +++ b/tests/kdc/leaks-kill.sh @@ -1,32 +1,55 @@ #!/bin/sh -name=$1 -pid=$2 +checkonly=no + +if [ "X$1" = "X--check" ] ; then + checkonly=yes + + pid=$2 + name=$3 +else + name=$1 + pid=$2 +fi + ec=0 -if [ "$(uname -s)" = "Darwin" ] ; then +rm -f leaks-log > /dev/null + +if [ "$(uname -s)" = "Darwin" ]; then echo "leaks check on $name ($pid)" leaks -exclude __CFInitialize $pid > leaks-log 2>&1 || \ { echo "leaks failed: $?"; cat leaks-log; exit 1; } - env pid=${pid} \ perl -e 'my $excluded = 0; my $num = -1; while (<>) { -if (/Process $ENV{pid}: (\d+) leaks for \d+ total leaked bytes/) { $num = $1;} -if (/(\d+) leaks excluded/) { $excluded = $1;} +if (/Process \d+: (\d+) leaks? for \d+ total leaked bytes?/) { $num = $1;} +if (/Process \d+: (\d+) leaks? malloced for \d+ total leaked byte?/) { $num = $1;} +if (/(\d+) leaks? excluded/) { $excluded = $1;} } exit 1 if ($num != 0 && $num != $excluded); exit 0;' leaks-log || \ { echo "Memory leak in $name" ; echo ""; cat leaks-log; ec=1; } - # [ "$ec" != "0" ] && { env PS1=": leaks-debugger !!!! ; " bash ; } + if grep -e '1 leak for' leaks-log > /dev/null && grep -e "Leak.*environ.*__CF_USER_TEXT_ENCODING" leaks-log > /dev/null ; then + echo "just running into rdar://problem/8764394" + ec=0 + fi + + [ "$ec" != "0" ] && { echo ""; cat leaks-log ; } + + #[ "$ec" != "0" ] && { malloc_history $pid -all_by_size > l; } + #[ "$ec" != "0" ] && { env PS1=": leaks-debugger !!!! ; " bash ; } + + [ "$ec" = "0" ] && rm leaks-log fi -kill $pid -sleep 3 -kill -9 $pid 2> /dev/null - -rm -f leaks-log +if [ "$checkonly" = no ] ; then + kill $pid + sleep 3 + kill -9 $pid 2> /dev/null + sleep 3 +fi exit $ec