if [[ $coreglob = "*" ]]; then
echo "Setting core file pattern..."
echo "core" > /proc/sys/kernel/core_pattern
- coreglob="$(egrep -o '^([^|%[:space:]]*)' /proc/sys/kernel/core_pattern)*"
+ coreglob="$(egrep -o '^([^|%[:space:]]*)' \
+ /proc/sys/kernel/core_pattern)*"
fi
function core_file
printf "%s" "$(ls -tr1 $coreglob 2> /dev/null | head -1)"
}
+function core_prog
+{
+ prog=$ZTEST
+ core_id=$($GDB --batch -c $1 | grep "Core was generated by" | \
+ tr \' ' ')
+ if [[ "$core_id" =~ "zdb " ]]; then
+ prog=$ZDB
+ fi
+ printf "%s" "$prog"
+}
+
function store_core
{
core="$(core_file)"
# check for core
if [[ -f "$core" ]]; then
+ coreprog=$(core_prog $core)
corestatus=$($GDB --batch --quiet \
-ex "set print thread-events off" \
-ex "printf \"*\n* Backtrace \n*\n\"" \
-ex "thread apply all bt" \
-ex "printf \"*\n* Backtraces (full) \n*\n\"" \
-ex "thread apply all bt full" \
- -ex "quit" $ZTEST "$core" | grep -v "New LWP")
+ -ex "quit" $coreprog "$core" | grep -v "New LWP")
# Dump core + logs to stored directory
echo "$corestatus" >>$dest/status