#!/bin/sh
ASTSBINDIR=$1
ASTVARRUNDIR=$2
NOTIFY=$3

ASTSBINDIR=${ASTSBINDIR:-/usr/sbin}
ASTVARRUNDIR=${ASTVARRUNDIR:-/var/run/asterisk}
NOTIFY=${NOTIFY:-/root@localhost.localdomain}
MACHINE=`hostname`
MAIL=`which mail`

RUNDIR=/tmp
DUMPCORE=/tmp

#===========================
ASTPIDFILE=${ASTVARRUNDIR}/asterisk.pid
PID=`cat ${ASTPIDFILE}`
DATE=`date "+%Y-%m-%dT%H:%M:%S%z"`

if test -f ${RUNDIR}/core.${PID} ; then
	CORE=${RUNDIR}/core.${PID}
elif test -f ${RUNDIR}/core ; then
	CORE=${RUNDIR}/core
else
	echo "CoreDump not found"
	exit
fi

echo "Asterisk on $MACHINE died at ${DATE}. GDB Backtrace." > "${DUMPCORE}/core.`hostname`-${DATE}.bt"
echo "" >> "${DUMPCORE}/core.`hostname`-${DATE}.bt"

gdb -batch \
	-ex "set pagination off" \
	-ex "set print elements 0" \
	-ex "set print null-stop" \
	-ex "set print pretty on" \
	-ex "bt" \
	-ex "bt full" \
	-ex "quit" \
	${ASTSBINDIR}/asterisk ${CORE} 2>&1| grep -v "New LWP" >> "${DUMPCORE}/core.`hostname`-${DATE}.bt"
if [ "x${MAIL}" != "x" ]; then
	cat "${DUMPCORE}/core.`hostname`-${DATE}.bt" | mail -s "Asterisk GDB Backtrace" $NOTIFY
fi
