Upgrade RunTest to try test 2 with a large stack if it fails with a smaller one

when running the interpreter.
This commit is contained in:
Philip.Hazel 2016-06-22 19:23:33 +00:00
parent 5f5e7f6fb2
commit b7850e4fca
2 changed files with 33 additions and 9 deletions

View File

@ -157,6 +157,11 @@ to the same code as '.' when PCRE2_DOTALL is set).
40. Fix two clang compiler warnings in pcre2test when only one code unit width 40. Fix two clang compiler warnings in pcre2test when only one code unit width
is supported. is supported.
41. Upgrade RunTest to automatically re-run test 2 with a large (64M) stack if
it fails when running the interpreter with a 16M stack (and if changing the
stack size via pcre2test is possible). This avoids having to manually set a
large stack size when testing with clang.
Version 10.21 12-January-2016 Version 10.21 12-January-2016
----------------------------- -----------------------------

37
RunTest
View File

@ -53,7 +53,7 @@
title0="Test 0: Unchecked pcre2test argument tests (to improve coverage)" title0="Test 0: Unchecked pcre2test argument tests (to improve coverage)"
title1="Test 1: Main non-UTF, non-UCP functionality (compatible with Perl >= 5.10)" title1="Test 1: Main non-UTF, non-UCP functionality (compatible with Perl >= 5.10)"
title2="Test 2: API, errors, internals, and non-Perl stuff" title2="Test 2: API, errors, internals and non-Perl stuff"
title3="Test 3: Locale-specific features" title3="Test 3: Locale-specific features"
title4A="Test 4: UTF" title4A="Test 4: UTF"
title4B=" and Unicode property support (compatible with Perl >= 5.10)" title4B=" and Unicode property support (compatible with Perl >= 5.10)"
@ -310,9 +310,12 @@ fi
# If it is possible to set the system stack size, arrange to set a value for # If it is possible to set the system stack size, arrange to set a value for
# test 2, which needs more than the even the Linux default when PCRE2 has been # test 2, which needs more than the even the Linux default when PCRE2 has been
# compiled by gcc with -fsanitize=address. When the compiler is clang, sanitize # compiled by gcc with -fsanitize=address. If "bigstack" is on the command
# options require an even bigger stack for test 2, and an increased stack for # line, set even bigger numbers. When the compiler is clang, sanitize options
# some of the other tests. # require an even bigger stack for test 2, and an increased stack for some of
# the other tests. Test 2 now has code to automatically try again with a 64M
# stack if it crashes when test2stack is "-S 16" when matching with the
# interpreter.
$sim ./pcre2test -S 1 /dev/null /dev/null $sim ./pcre2test -S 1 /dev/null /dev/null
if [ $? -eq 0 ] ; then if [ $? -eq 0 ] ; then
@ -503,12 +506,28 @@ for bmode in "$test8" "$test16" "$test32"; do
checkresult $? 2 "$opt" checkresult $? 2 "$opt"
else else
echo " " echo " "
echo "** Test 2 requires a lot of stack. If it has crashed with a" echo "** Test 2, when run under the interpreter, requires a lot of stack."
echo "** segmentation fault, it may be that you do not have enough" echo "** If it has crashed with a segmentation fault, it may be that you"
echo "** stack available by default. Please see the 'pcre2stack' man" echo "** do not have enough stack available by default. Please see the"
echo "** page for a discussion of PCRE2's stack usage." echo "** 'pcre2stack' man page for a discussion of PCRE2's stack usage."
if [ "$test2stack" != "-S 16" -o "$opt" != "" ]; then
echo " "
exit 1
fi
echo " " echo " "
exit 1 echo "** Trying again with an increased stack size."
echo " "
echo $title2 "(excluding UTF-$bits) (64M stack)"
$sim $valgrind ${opt:+$vjs} ./pcre2test -q -S 64 $bmode $opt $testdata/testinput2 testtry
if [ $? = 0 ] ; then
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $bmode $opt -error -63,-62,-2,-1,0,100,188,189 >>testtry
checkresult $? 2 "$opt"
else
echo " "
echo "** Failed with an increased stack size. Tests abandoned."
echo " "
exit 1
fi
fi fi
done done
fi fi