From: Joe Orton Date: Tue, 15 Sep 2020 08:50:59 +0000 (+0000) Subject: Merge r1880602, r1881396 from trunk: [under CTR for Travis changes] X-Git-Tag: 2.4.47~268 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e2585c7dc80ff3aefb9a0ee608bb2b3dc4c21490;p=thirdparty%2Fapache%2Fhttpd.git Merge r1880602, r1881396 from trunk: [under CTR for Travis changes] 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 --- diff --git a/.travis.yml b/.travis.yml index 44eed28ff3d..5a48dff535c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,6 +28,7 @@ addons: - libpcre2-dev - libldap2-dev - ldap-utils + - gdb env: global: - MFLAGS=-j2 diff --git a/test/travis_run_linux.sh b/test/travis_run_linux.sh index 46ae64bb338..ff2a2cda2f2 100755 --- a/test/travis_run_linux.sh +++ b/test/travis_run_linux.sh @@ -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