#!/bin/sh # PCP QA Test No. 828 # Use valgrind to track down memory leaks associated with # # pmDestroyContext(). # See http://oss.sgi.com/bugzilla/show_bug.cgi?id=1057 # # Copyright (c) 2014 Ken McDonell. All Rights Reserved. # seq=`basename $0` echo "QA output created by $seq" # get standard environment, filters and checks . ./common.product . ./common.filter . ./common.check _check_valgrind status=1 # failure is the default! $sudo rm -rf $tmp.* $seq.full trap "cd $here; rm -rf $tmp.*; exit \$status" 0 1 2 3 15 _filter() { # free pdubuf[size]: 0xe61000[28672] 0xe5c000[17408] sed \ -e '/free pdubuf/s/0x[0-9a-f]*\[[0-9]*\]/addr[size]/g' } cat >$tmp.suppress < Memcheck:Leak fun:realloc fun:main } { Memcheck:Leak fun:malloc fun:pmNewContext fun:main } { Memcheck:Leak fun:realloc fun:pmNewContext fun:main } { Memcheck:Leak fun:malloc fun:pmNewContext fun:pmDupContext fun:main } { Memcheck:Leak fun:realloc fun:pmNewContext fun:pmDupContext fun:main } { Memcheck:Leak fun:malloc fun:strdup fun:pmNewZone fun:pmNewContextZone fun:main } { Memcheck:Leak fun:malloc fun:pmNewZone fun:pmNewContextZone fun:main } { Memcheck:Leak fun:malloc fun:realloc fun:pmNewZone fun:pmNewContextZone fun:main } { Memcheck:Leak fun:malloc fun:__pmFindPDUBuf fun:__pmLogRead fun:__pmGetArchiveEnd fun:pmGetArchiveEnd fun:main } { Memcheck:Leak fun:malloc fun:__pmFindPDUBuf fun:__pmDecodeResult fun:__pmLogRead fun:__pmGetArchiveEnd fun:pmGetArchiveEnd fun:main } { Memcheck:Leak fun:malloc fun:__pmFindPDUBuf fun:__pmDecodeResult fun:__pmLogRead ... fun:__pmLogFetchInterp fun:__pmLogFetch fun:pmFetch fun:main } { Memcheck:Leak fun:memalign fun:__pmFindPDUBuf fun:__pmLogRead fun:__pmGetArchiveEnd fun:pmGetArchiveEnd fun:main } { Memcheck:Leak fun:memalign fun:__pmFindPDUBuf fun:__pmDecodeResult fun:__pmLogRead fun:__pmGetArchiveEnd fun:pmGetArchiveEnd fun:main } { Memcheck:Leak fun:memalign fun:__pmFindPDUBuf fun:__pmDecodeResult fun:__pmLogRead ... fun:__pmLogFetchInterp fun:__pmLogFetch fun:pmFetch fun:main } { Memcheck:Leak fun:malloc fun:realloc ... fun:__pmSetVersionIPC fun:__pmLogChkLabel fun:__pmLogChangeVol fun:__pmLogOpen fun:pmNewContext fun:main } End-of-File # real QA test starts here for arg in "" -d do case "$arg" in '') echo "=== pmNewContext ===" ;; -d) echo echo "=== pmDupContext ===" ;; esac reachable_opt='--show-leak-kinds=all' reachable_opt='--show-reachable=yes' valgrind \ --leak-check=full --read-var-info=yes $reachable_opt \ --suppressions=$tmp.suppress --log-file=$tmp.valgrind \ --gen-suppressions=all \ 2>$tmp.valgrind.err >$tmp.valgrind.out \ src/churnctx $arg -z -s 10 -a src/bug1057 kernel.all.load hinv.ncpu disk.dev.total echo "=== std out ===" cat $tmp.valgrind.out echo "=== std err ===" _filter < $tmp.valgrind.err echo "=== valgrind report ===" >>$seq.full cat $tmp.valgrind >>$seq.full echo "=== filtered valgrind report ===" _filter_valgrind <$tmp.valgrind done # success, all done status=0 exit