diff --git a/.travis.yml b/.travis.yml index df64d773e59b..5b861580e37e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,6 +27,9 @@ addons: - aspell - aspell-en - ccache + - apport # for coredumps + - gdb + coverity_scan: project: name: "grondo/flux-core" @@ -64,9 +67,7 @@ before_install: - echo '#error Non-build-tree flux/core.h!' > $HOME/local/include/flux/core.h script: - - export LD_PRELOAD=libSegFault.so - - export SEGFAULT_USE_ALTSTACK=1 - - export LIBC_FATAL_STDERR_=1 + - ulimit -c unlimited - export CC="ccache $CC" - export MAKECMDS="make distcheck" # Ensure travis builds libev such that libfaketime will work: @@ -97,3 +98,4 @@ after_success: after_failure: - find . -name t[0-9]*.output | xargs -i sh -c 'printf "\033[31mFound {}\033[39m\n";cat {}' - find . -name *.broker.log | xargs -i sh -c 'printf "\033[31mFound {}\033[39m\n";cat {}' + - src/test/backtrace-all.sh diff --git a/src/test/backtrace-all.sh b/src/test/backtrace-all.sh new file mode 100755 index 000000000000..80b79c220d18 --- /dev/null +++ b/src/test/backtrace-all.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# +# Find all possible core files under current directory. Attempt +# to determine exe using file(1) and dump stack trace with gdb. +# +say () { printf "\033[91m%s\033[39m\n" "$@" >&2; } +die () { say "$@"; exit 1; } + +find . -name *.core -o -name core | while read -r line; do + d=$(dirname $line) + f=$(basename $line) + exe=$(file $line | sed "s/.*from '\([^ \t]*\).*'.*/\1/") + ( cd $d && + test -x $exe || die "Failed to find executable at $exe" && + say "Found corefile for $exe" && + gdb --batch --quiet -ex "thread apply all bt full" $exe $f + ) +done