]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r1880602, r1881396 from trunk: [under CTR for Travis changes]
authorJoe Orton <jorton@apache.org>
Tue, 15 Sep 2020 08:50:59 +0000 (08:50 +0000)
committerJoe Orton <jorton@apache.org>
Tue, 15 Sep 2020 08:50:59 +0000 (08:50 +0000)
Fail for more abort() errors in error_log.
Fail if a core dump is produced, and dump the backtrace if so.
(e.g. during parent or child process shutdown, core dumps will
not show up as test case failures so would not otherwise be caught)

Catch assert() failures.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1881735 13f79535-47bb-0310-9956-ffa450edef68

.travis.yml
test/travis_run_linux.sh

index 44eed28ff3da8f7d8f7b064da8f6174f3793a688..5a48dff535cd4b6a66071622950dc07c745fd54e 100644 (file)
@@ -28,6 +28,7 @@ addons:
       - libpcre2-dev
       - libldap2-dev
       - ldap-utils
+      - gdb
 env:
   global:
     - MFLAGS=-j2
index 46ae64bb3386845a2bf528fa60640f71557086e9..ff2a2cda2f2f8057f14a0572457920ebd0f7e96c 100755 (executable)
@@ -100,21 +100,31 @@ if ! test -v SKIP_TESTING; then
         popd
     fi
 
-    if grep -q 'Segmentation fault' test/perl-framework/t/logs/error_log; then
-        grep --color=always -C5 'Segmentation fault' test/perl-framework/t/logs/error_log
-        RV=2
-    fi
+    # Catch cases where abort()s get logged to stderr by libraries but
+    # only cause child processes to terminate e.g. during shutdown,
+    # which may not otherwise trigger test failures.
+
+    # "glibc detected": printed with LIBC_FATAL_STDERR_/MALLOC_CHECK_
+    # glibc will abort when malloc errors are detected.  This will get
+    # caught by the segfault grep as well.
+
+    # "pool concurrency check": printed by APR built with
+    # --enable-thread-debug when an APR pool concurrency check aborts
+
+    for phrase in 'Segmentation fault' 'glibc detected' 'pool concurrency check:' 'Assertion.*failed'; do
+        if grep -q "$phrase" test/perl-framework/t/logs/error_log; then
+            grep --color=always -C5 "$phrase" test/perl-framework/t/logs/error_log
+            RV=2
+        fi
+    done
 
     if test -v TEST_UBSAN && ls ubsan.log.* &> /dev/null; then
         cat ubsan.log.*
         RV=3
     fi
 
-    # With LIBC_FATAL_STDERR_/MALLOC_CHECK_ glibc will abort when
-    # malloc errors are detected.  This should get caught by the
-    # segfault grep above, but in case it is not, catch it here too:
-    if grep 'glibc detected' test/perl-framework/t/logs/error_log; then
-        grep --color=always -C20 'glibc detected' test/perl-framework/t/logs/error_log
+    if test -f test/perl-framework/t/core; then
+        gdb -ex 'thread apply all backtrace' -batch ./httpd test/perl-framework/t/core
         RV=4
     fi