# "Check many leaks" test #1 # Cramming all kinds of weird commands in here. # As you find leaks, please create separate, small test # for each leak. # Narrowing down the leak using this large test may be difficult. # It is intended to be a blanket "is everything ok?" test echo "Warm up" i=1 l=1 t=1 export t while test $i != 99; do t=value1_$i; t=value2_$i true; t=value3_$i /bin/true; t=value4_$i exec 1>&1 { t=value3_$i /bin/true; } >/dev/null; true; then : << HERE >/dev/null; true <>/foo/bar fi { : /bin/*; } unset var echo >/dev/null ${var#} echo >/dev/null ${var##} echo >/dev/null ${var#*} echo >/dev/null ${var##*} echo >/dev/null ${var%} echo >/dev/null ${var%%} echo >/dev/null ${var%*} echo >/dev/null ${var%%*} var= echo >/dev/null ${var#} echo >/dev/null ${var##} echo >/dev/null ${var#*} echo >/dev/null ${var##*} echo >/dev/null ${var%} echo >/dev/null ${var%%} echo >/dev/null ${var%*} echo >/dev/null ${var%%*} var=ababcdcd echo >/dev/null ${var#ab} echo >/dev/null ${var##ab} echo >/dev/null ${var#a*b} echo >/dev/null ${var##a*b} echo >/dev/null ${var#?} echo >/dev/null ${var##?} echo >/dev/null ${var#*} echo >/dev/null ${var##*} echo >/dev/null ${var%cd} echo >/dev/null ${var%%cd} echo >/dev/null ${var%c*d} echo >/dev/null ${var%%c*d} echo >/dev/null ${var%?} echo >/dev/null ${var%%?} echo >/dev/null ${var%*} echo >/dev/null ${var%%*} set -- par1_$i par2_$i par3_$i par4_$i trap "echo trap$i" WINCH f() { true; true; true; true; true; true; true; true; } f() { true; true; true; true; true; true; true; true; echo $1; } f >/dev/null : $((i++)) done memleak echo "Measuring memory leak..." # Please copy the entire block from above verbatim i=1 l=1 t=1 export t while test $i != 99; do t=value1_$i; t=value2_$i true; t=value3_$i /bin/true; t=value4_$i exec 1>&1 { t=value3_$i /bin/true; } >/dev/null; true; then : << HERE >/dev/null; true <>/foo/bar fi { : /bin/*; } unset var echo >/dev/null ${var#} echo >/dev/null ${var##} echo >/dev/null ${var#*} echo >/dev/null ${var##*} echo >/dev/null ${var%} echo >/dev/null ${var%%} echo >/dev/null ${var%*} echo >/dev/null ${var%%*} var= echo >/dev/null ${var#} echo >/dev/null ${var##} echo >/dev/null ${var#*} echo >/dev/null ${var##*} echo >/dev/null ${var%} echo >/dev/null ${var%%} echo >/dev/null ${var%*} echo >/dev/null ${var%%*} var=ababcdcd echo >/dev/null ${var#ab} echo >/dev/null ${var##ab} echo >/dev/null ${var#a*b} echo >/dev/null ${var##a*b} echo >/dev/null ${var#?} echo >/dev/null ${var##?} echo >/dev/null ${var#*} echo >/dev/null ${var##*} echo >/dev/null ${var%cd} echo >/dev/null ${var%%cd} echo >/dev/null ${var%c*d} echo >/dev/null ${var%%c*d} echo >/dev/null ${var%?} echo >/dev/null ${var%%?} echo >/dev/null ${var%*} echo >/dev/null ${var%%*} set -- par1_$i par2_$i par3_$i par4_$i trap "echo trap$i" WINCH f() { true; true; true; true; true; true; true; true; } f() { true; true; true; true; true; true; true; true; echo $1; } f >/dev/null : $((i++)) done memleak kb=$? # Observed some variability, bumped to 12k if test $kb -le 12; then echo Ok #$kb else echo "Bad: $kb kb (or more) leaked" fi