From 002f908c2fd92248e36aa9f3eac233163049273c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Mon, 18 Nov 2019 23:17:37 +0800 Subject: [PATCH 1/2] Dump the backtrace to stdout when core is found in systest directory (cherry picked from commit 512dadc8d10151530ca94b10e8fb9ee7170a036f) --- bin/tests/system/run.gdb | 1 + bin/tests/system/run.sh | 12 ++++++++++++ util/copyrights | 1 + 3 files changed, 14 insertions(+) create mode 100644 bin/tests/system/run.gdb diff --git a/bin/tests/system/run.gdb b/bin/tests/system/run.gdb new file mode 100644 index 0000000000..60981e1e9b --- /dev/null +++ b/bin/tests/system/run.gdb @@ -0,0 +1 @@ +thread apply all bt full diff --git a/bin/tests/system/run.sh b/bin/tests/system/run.sh index a05caa01d4..9c546d1b8e 100755 --- a/bin/tests/system/run.sh +++ b/bin/tests/system/run.sh @@ -200,6 +200,18 @@ else echoinfo "I:$systest:Test claims success despite crashes: $core_dumps" echofail "R:$systest:FAIL" # Do not clean up - we need the evidence. + find "$systest/" -name 'core*' | while read -r coredump; do + SYSTESTDIR="$systest" + echoinfo "D:$systest:backtrace from $coredump start" + binary=$(gdb --batch --core="$coredump" | sed -ne "s/Core was generated by \`//;s/ .*'.$//p;") + "$TOP/libtool" --mode=execute gdb \ + --batch \ + --command=run.gdb \ + --core="$coredump" \ + -- \ + "$binary" + echoinfo "D:$systest:backtrace from $coredump end" + done elif [ $assertion_failures -ne 0 ]; then echoinfo "I:$systest:Test claims success despite $assertion_failures assertion failure(s)" echofail "R:$systest:FAIL" diff --git a/util/copyrights b/util/copyrights index cc13628f7d..df6a62a1a7 100644 --- a/util/copyrights +++ b/util/copyrights @@ -1027,6 +1027,7 @@ ./bin/tests/system/rsabigexponent/prereq.sh SH 2012,2014,2016,2017,2018,2019,2020 ./bin/tests/system/rsabigexponent/setup.sh SH 2012,2014,2016,2017,2018,2019,2020 ./bin/tests/system/rsabigexponent/tests.sh SH 2012,2016,2018,2019,2020 +./bin/tests/system/run.gdb X 2019,2020 ./bin/tests/system/run.sh SH 2000,2001,2004,2007,2010,2012,2014,2015,2016,2017,2018,2019,2020 ./bin/tests/system/runall.sh SH 2000,2001,2004,2007,2010,2011,2012,2014,2015,2016,2018,2019,2020 ./bin/tests/system/runsequential.sh SH 2018,2019,2020 From 3f68b0ee8ec38c06c62fa5e760bcd50a4cacce35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Tue, 19 Nov 2019 02:29:12 +0800 Subject: [PATCH 2/2] Get better stack traces (cherry picked from commit d0a0c22433accf8ab3d18bb785cee80aeeb8808e) --- .gitlab-ci.yml | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6776006363..0956bb5a82 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,6 +19,8 @@ variables: CONFIGURE: ./configure SCAN_BUILD: scan-build-9 + CFLAGS_COMMON: -fno-omit-frame-pointer -fno-optimize-sibling-calls -O1 -g -Wall -Wextra + # Pass run-time flags to AddressSanitizer to get core dumps on error. ASAN_OPTIONS_COMMON: abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1 @@ -426,7 +428,7 @@ push:docs:sid:amd64: gcc:alpine3.10:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--enable-dnstap" <<: *alpine_3_10_amd64_image <<: *build_job @@ -450,7 +452,7 @@ unit:gcc:alpine3.10:amd64: gcc:centos6:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--with-libidn2 --disable-warn-error" <<: *centos_centos6_amd64_image <<: *build_job @@ -474,7 +476,7 @@ unit:gcc:centos6:amd64: gcc:centos7:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2" <<: *centos_centos7_amd64_image <<: *build_job @@ -498,7 +500,7 @@ unit:gcc:centos7:amd64: gcc:centos8:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--with-libidn2" <<: *centos_centos8_amd64_image <<: *build_job @@ -522,7 +524,7 @@ unit:gcc:centos8:amd64: gcc:jessie:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON} -O2" EXTRA_CONFIGURE: "--without-cmocka --with-python --disable-geoip" <<: *debian_jessie_amd64_image <<: *build_job @@ -546,7 +548,7 @@ unit:gcc:jessie:amd64: gcc:stretch:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON} -O2" <<: *debian_stretch_amd64_image <<: *build_job @@ -569,7 +571,7 @@ unit:gcc:stretch:amd64: gcc:buster:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" <<: *debian_buster_amd64_image <<: *build_job @@ -603,7 +605,7 @@ scan-build:buster:amd64: stage: postcheck variables: CC: clang-9 - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" CONFIGURE: "${SCAN_BUILD} ./configure" EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2" script: @@ -624,7 +626,7 @@ scan-build:buster:amd64: gcc:sid:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O3 -g" + CFLAGS: "${CFLAGS_COMMON} -O3" EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2" RUN_MAKE_INSTALL: 1 MAKE: bear make @@ -699,7 +701,7 @@ unit:tarball:sid:amd64: gcc:sid:i386: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O3 -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2 --without-python" <<: *debian_sid_i386_image <<: *build_job @@ -723,7 +725,7 @@ unit:gcc:sid:i386: gcc:fedora31:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON} -O1" EXTRA_CONFIGURE: "--with-libidn2" <<: *fedora_31_amd64_image <<: *build_job @@ -747,7 +749,7 @@ unit:gcc:fedora31:amd64: gcc:xenial:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON} -O2" EXTRA_CONFIGURE: "--disable-geoip" <<: *ubuntu_xenial_amd64_image <<: *build_job @@ -771,7 +773,7 @@ unit:gcc:xenial:amd64: gcc:bionic:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON} -Og" EXTRA_CONFIGURE: "--with-libidn2" <<: *ubuntu_bionic_amd64_image <<: *build_job @@ -795,7 +797,7 @@ unit:gcc:bionic:amd64: asan:sid:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g -fsanitize=address,undefined -DISC_MEM_USE_INTERNAL_MALLOC=0" + CFLAGS: "${CFLAGS_COMMON} -fsanitize=address,undefined -DISC_MEM_USE_INTERNAL_MALLOC=0" LDFLAGS: "-fsanitize=address,undefined" EXTRA_CONFIGURE: "--with-libidn2" <<: *debian_sid_amd64_image @@ -824,7 +826,7 @@ unit:asan:sid:amd64: clang:stretch:amd64: variables: CC: clang - CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g" + CFLAGS: "${CFLAGS_COMMON} -Wenum-conversion" EXTRA_CONFIGURE: "--with-python=python3" <<: *debian_stretch_amd64_image <<: *build_job @@ -841,7 +843,7 @@ unit:clang:stretch:amd64: clang:stretch:i386: variables: CC: clang - CFLAGS: "-Wall -Wextra -Wenum-conversion -O2 -g" + CFLAGS: "${CFLAGS_COMMON} -Wenum-conversion" EXTRA_CONFIGURE: "--with-python=python2" <<: *debian_stretch_i386_image <<: *build_job @@ -851,7 +853,7 @@ clang:stretch:i386: pkcs11:sid:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--enable-native-pkcs11 --with-pkcs11=/usr/lib/softhsm/libsofthsm2.so" <<: *debian_sid_amd64_image <<: *build_job @@ -874,7 +876,7 @@ unit:pkcs11:sid:amd64: clang:freebsd11.3:amd64: variables: - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" <<: *freebsd_amd64 <<: *build_job @@ -896,7 +898,7 @@ unit:clang:freebsd11.3:amd64: clang:freebsd12.0:amd64: variables: - CFLAGS: "-Wall -Wextra -O2 -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--enable-dnstap" <<: *freebsd_amd64 <<: *build_job @@ -938,7 +940,7 @@ system:clang:openbsd6.5:amd64: nolibtool:sid:amd64: variables: CC: gcc - CFLAGS: "-Wall -Wextra -Og -g" + CFLAGS: "${CFLAGS_COMMON}" EXTRA_CONFIGURE: "--with-libidn2 --without-libtool --with-dlopen" <<: *debian_sid_amd64_image <<: *build_job