find "$systest/" \( -name 'core*' -or -name '*.core' \) ! -name '*.gz' ! -name '*.txt' | sort
}
-if [ $status != 0 ]; then
+core_dumps=$(get_core_dumps | tr '\n' ' ')
+assertion_failures=$(find "$systest/" -name named.run -print0 | xargs -0 grep "assertion failure" | wc -l)
+sanitizer_summaries=$(find "$systest/" -name 'tsan.*' | wc -l)
+if [ -n "$core_dumps" ]; then
+ echoinfo "I:$systest:Core dump(s) found: $core_dumps"
+ echofail "R:$systest:FAIL"
+ get_core_dumps | while read -r coredump; do
+ SYSTESTDIR="$systest"
+ echoinfo "D:$systest:backtrace from $coredump:"
+ echoinfo "D:$systest:--------------------------------------------------------------------------------"
+ binary=$(gdb --batch --core="$coredump" 2>/dev/null | sed -ne "s/Core was generated by \`//;s/ .*'.$//p;")
+ "${TOP}/libtool" --mode=execute gdb \
+ -batch \
+ -ex bt \
+ -core="$coredump" \
+ -- \
+ "$binary" 2>/dev/null | sed -n '/^Core was generated by/,$p' | cat_d
+ echoinfo "D:$systest:--------------------------------------------------------------------------------"
+ coredump_backtrace=$(basename "${coredump}")-backtrace.txt
+ echoinfo "D:$systest:full backtrace from $coredump saved in $coredump_backtrace"
+ "${TOP}/libtool" --mode=execute gdb \
+ -batch \
+ -command=run.gdb \
+ -core="$coredump" \
+ -- \
+ "$binary" > "$coredump_backtrace" 2>&1
+ echoinfo "D:$systest:core dump $coredump archived as $coredump.gz"
+ gzip -1 "${coredump}"
+ done
+elif [ "$assertion_failures" -ne 0 ]; then
+ echoinfo "I:$systest:$assertion_failures assertion failure(s) found"
+ find "$systest/" -name 'tsan.*' -print0 | xargs -0 grep "SUMMARY: " | sort -u | cat_d
+ echofail "R:$systest:FAIL"
+elif [ "$sanitizer_summaries" -ne 0 ]; then
+ echoinfo "I:$systest:$sanitizer_summaries sanitizer report(s) found"
echofail "R:$systest:FAIL"
- # Do not clean up - we need the evidence.
else
- core_dumps=$(get_core_dumps | tr '\n' ' ')
- assertion_failures=$(find "$systest/" -name named.run -print0 | xargs -0 grep "assertion failure" | wc -l)
- sanitizer_summaries=$(find "$systest/" -name 'tsan.*' | wc -l)
- if [ -n "$core_dumps" ]; then
- echoinfo "I:$systest:Test claims success despite crashes: $core_dumps"
- echofail "R:$systest:FAIL"
- # Do not clean up - we need the evidence.
- get_core_dumps | while read -r coredump; do
- SYSTESTDIR="$systest"
- echoinfo "D:$systest:backtrace from $coredump:"
- echoinfo "D:$systest:--------------------------------------------------------------------------------"
- binary=$(gdb --batch --core="$coredump" 2>/dev/null | sed -ne "s/Core was generated by \`//;s/ .*'.$//p;")
- "${TOP}/libtool" --mode=execute gdb \
- -batch \
- -ex bt \
- -core="$coredump" \
- -- \
- "$binary" 2>/dev/null | sed -n '/^Core was generated by/,$p' | cat_d
- echoinfo "D:$systest:--------------------------------------------------------------------------------"
- coredump_backtrace=$(basename "${coredump}")-backtrace.txt
- echoinfo "D:$systest:full backtrace from $coredump saved in $coredump_backtrace"
- "${TOP}/libtool" --mode=execute gdb \
- -batch \
- -command=run.gdb \
- -core="$coredump" \
- -- \
- "$binary" > "$coredump_backtrace" 2>&1
- echoinfo "D:$systest:core dump $coredump archived as $coredump.gz"
- gzip -1 "${coredump}"
- done
- elif [ "$assertion_failures" -ne 0 ]; then
- echoinfo "I:$systest:Test claims success despite $assertion_failures assertion failure(s)"
- echofail "R:$systest:FAIL"
- # Do not clean up - we need the evidence.
- elif [ "$sanitizer_summaries" -ne 0 ]; then
- echoinfo "I:$systest:Test claims success despite $sanitizer_summaries sanitizer reports(s)"
- echofail "R:$systest:FAIL"
- else
- echopass "R:$systest:PASS"
- if $clean; then
- ( cd $systest && $SHELL clean.sh "$@" )
- if test -d ../../../.git; then
- git status -su --ignored $systest 2>/dev/null | \
- sed -n -e 's|^?? \(.*\)|I:file \1 not removed|p' \
- -e 's|^!! \(.*/named.run\)$|I:file \1 not removed|p' \
- -e 's|^!! \(.*/named.memstats\)$|I:file \1 not removed|p'
- fi
+ echopass "R:$systest:PASS"
+ if $clean; then
+ ( cd $systest && $SHELL clean.sh "$@" )
+ if test -d ../../../.git; then
+ git status -su --ignored $systest 2>/dev/null | \
+ sed -n -e 's|^?? \(.*\)|I:file \1 not removed|p' \
+ -e 's|^!! \(.*/named.run\)$|I:file \1 not removed|p' \
+ -e 's|^!! \(.*/named.memstats\)$|I:file \1 not removed|p'
fi
fi
fi