summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>2016-06-22 19:23:33 +0000
committerph10 <ph10@6239d852-aaf2-0410-a92c-79f79f948069>2016-06-22 19:23:33 +0000
commita0df6789ab76ca68a6dee31a8281c291955f72f3 (patch)
tree695250f8a836fd6c006e45af5e46121317af4cfc
parent636c8296e7e426e4fdbae4643e066b909597ea82 (diff)
downloadpcre2-a0df6789ab76ca68a6dee31a8281c291955f72f3.tar.gz
Upgrade RunTest to try test 2 with a large stack if it fails with a smaller one
when running the interpreter. git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@532 6239d852-aaf2-0410-a92c-79f79f948069
-rw-r--r--ChangeLog5
-rwxr-xr-xRunTest37
2 files changed, 33 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index f397fc7..cd55168 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
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
-----------------------------
diff --git a/RunTest b/RunTest
index 4b20ca9..9332fd8 100755
--- a/RunTest
+++ b/RunTest
@@ -53,7 +53,7 @@
title0="Test 0: Unchecked pcre2test argument tests (to improve coverage)"
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"
title4A="Test 4: UTF"
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
# 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
-# options require an even bigger stack for test 2, and an increased stack for
-# some of the other tests.
+# compiled by gcc with -fsanitize=address. If "bigstack" is on the command
+# line, set even bigger numbers. When the compiler is clang, sanitize options
+# 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
if [ $? -eq 0 ] ; then
@@ -503,12 +506,28 @@ for bmode in "$test8" "$test16" "$test32"; do
checkresult $? 2 "$opt"
else
echo " "
- echo "** Test 2 requires a lot of stack. If it has crashed with a"
- echo "** segmentation fault, it may be that you do not have enough"
- echo "** stack available by default. Please see the 'pcre2stack' man"
- echo "** page for a discussion of PCRE2's stack usage."
+ echo "** Test 2, when run under the interpreter, requires a lot of stack."
+ echo "** If it has crashed with a segmentation fault, it may be that you"
+ echo "** do not have enough stack available by default. Please see the"
+ 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 "** Trying again with an increased stack size."
echo " "
- exit 1
+ 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
done
fi