forked from Mirrors/freeswitch
184 lines
4.2 KiB
Bash
Executable File
184 lines
4.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
arg=$1
|
|
shift
|
|
|
|
if [ -f "config.status" ] ; then
|
|
prefix=$(cat config.status | grep @prefix@ | awk -F, '{print $3}')
|
|
fi
|
|
if [ -f "config.status" -a -z "$prefix" ] ; then
|
|
prefix=$(cat config.status | grep '"prefix"' | awk -F\" '{print $4}')
|
|
fi
|
|
|
|
if [ -z "$prefix" -a -d "/usr/local/freeswitch" ] ; then
|
|
prefix="/usr/local/freeswitch"
|
|
fi
|
|
if [ -z "$prefix" -a -d "/opt/freeswitch" ] ; then
|
|
prefix="/opt/freeswitch"
|
|
fi
|
|
|
|
if [ -z "$prefix" ] ; then
|
|
prefix=$FS_PREFIX
|
|
fi
|
|
|
|
if [ -z "$prefix" -a -f "./bin/freeswitch" ] ; then
|
|
prefix=`pwd`
|
|
fi
|
|
|
|
if [ -z "$prefix" ] ; then
|
|
echo "Unable to locate freeswitch prefix directory."
|
|
exit 255
|
|
fi
|
|
|
|
if [ "$arg" = "gcore" ] ; then
|
|
user=$1
|
|
shift
|
|
fspid=`cat $prefix/run/freeswitch.pid`
|
|
echo "pulling gcore $fspid"
|
|
gcore -o core $fspid
|
|
else
|
|
user=$arg
|
|
fi
|
|
|
|
|
|
core=`ls -1t core* | head -1 2> /dev/null`
|
|
|
|
if [ -z "$core" ] ; then
|
|
core=`ls -1 core 2> /dev/null`
|
|
fi
|
|
|
|
if [ -z "$core" ] ; then
|
|
core=`ls -1 freeswitch.core 2> /dev/null`
|
|
fi
|
|
|
|
if [ -z "$core" ] ; then
|
|
echo "You must be in the current directory with a core file from FreeSWITCH!"
|
|
exit 255
|
|
fi
|
|
|
|
if [ -x `which gdb` ] ; then
|
|
echo "Found gdb"
|
|
else
|
|
echo "Unable to locate gdb, is it installed?"
|
|
exit 255
|
|
fi
|
|
|
|
echo "core is $core"
|
|
|
|
line="--------------------------------------------------------------------------------"
|
|
|
|
mypwd=`pwd`
|
|
tmpdir=/tmp/fscore_pb.tmp
|
|
post_file=$mypwd/fscore_pb.post
|
|
|
|
|
|
if [ -z $user ] ; then
|
|
user=$SUDO_USER
|
|
fi
|
|
|
|
if [ -z $user ] ; then
|
|
user=$USER
|
|
fi
|
|
|
|
if [ -z $user ] ; then
|
|
user="anon"
|
|
fi
|
|
|
|
post_cmd=""
|
|
#command -v wget >/dev/null 2>&1
|
|
#if [ $? -eq 0 ]; then
|
|
# post_cmd="curl -d name=fscore_pb --data-urlencode text@$post_file https://newpastebin.freeswitch.org/api/create"
|
|
# post_cmd="wget --output-file=/dev/null --output-document=/tmp/fscore_pb.tmp/pb_out --http-user=pastebin --http-password=freeswitch https://pastebin.freeswitch.org --post-file=$post_file"
|
|
# echo -n "paste=Send&remember=0&poster=$user&format=none&expiry=f&code2=" > $post_file
|
|
#fi
|
|
|
|
if [ -z "$post_cmd" ]; then
|
|
command -v curl >/dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
post_cmd="curl -o /tmp/fscore_pb.tmp/pb_out -d name=fscore_pb --data-urlencode text@$post_file https://pastebin.freeswitch.org/api/create"
|
|
# post_cmd="curl -o /tmp/fscore_pb.tmp/pb_out --user pastebin:freeswitch http://pastebin.freeswitch.org -d paste=Send -d remember=0 -d poster=$user -d format=none -d expiry=f --data-urlencode code2@$post_file"
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$post_cmd" ]; then
|
|
echo "Unable to locate curl."
|
|
exit 255
|
|
fi
|
|
|
|
echo "Gathering Data Please Wait........."
|
|
|
|
UNAME=`uname`;
|
|
|
|
#Linux
|
|
if [ "${UNAME}" = "Linux" ]; then
|
|
echo "LSB RELEASE:" >> $post_file
|
|
echo $line >> $post_file
|
|
if [ -f /etc/redhat-release ]; then
|
|
cat /etc/redhat-release >> $post_file
|
|
else
|
|
lsb_release -a >> $post_file
|
|
fi
|
|
|
|
echo "CPU INFO:" >> $post_file
|
|
echo $line >> $post_file
|
|
cat /proc/cpuinfo >> $post_file
|
|
#Mac
|
|
elif [ "${UNAME}" = "Darwin" ]; then
|
|
system_profiler SPSoftwareDataType SPHardwareDataType >> $post_file
|
|
fi;
|
|
|
|
echo "GIT INFO:" >> $post_file
|
|
echo $line >> $post_file
|
|
echo -n "Revision: " >> $post_file
|
|
if [ -d ".git" ] ; then
|
|
git log -1 | cat >> $post_file
|
|
printf "\n\n\n" >> $post_file
|
|
git status >> $post_file
|
|
else
|
|
echo "Not run from an git managed directory." >> $post_file
|
|
fi
|
|
|
|
echo "GDB BACKTRACE:" >> $post_file
|
|
echo $line >> $post_file
|
|
|
|
cat > fscore_pb.$$.gdb <<EOF
|
|
echo \n\n
|
|
set pagination off
|
|
echo Thread Info\n
|
|
echo $line\n
|
|
info threads
|
|
echo Stack Trace\n
|
|
echo $line
|
|
bt
|
|
echo \n\n\n\n Stack Trace (full)\n
|
|
echo $line\n
|
|
bt full
|
|
echo \n\n\n\n Stack Trace (all threads)\n
|
|
echo $line\n
|
|
thread apply all bt
|
|
echo \n\n\n\n Stack Trace (all threads) (full)\n
|
|
echo $line\n
|
|
thread apply all bt full
|
|
quit
|
|
EOF
|
|
|
|
gdb $prefix/bin/freeswitch `echo $core | tail -n1` -x fscore_pb.$$.gdb 1 >> $post_file 2>/dev/null
|
|
|
|
rm fscore_pb.$$.gdb
|
|
rm -fr $tmpdir
|
|
mkdir -p $tmpdir
|
|
cd $tmpdir
|
|
|
|
echo $post_cmd
|
|
$post_cmd
|
|
|
|
mv $post_file $tmpdir
|
|
|
|
echo "Finished."
|
|
if [ -e /tmp/fscore_pb.tmp/pb_out ]; then
|
|
pb=`cat /tmp/fscore_pb.tmp/pb_out`
|
|
echo "Please report $pb to the developers."
|
|
else
|
|
echo "Please check recent posts on http://pastebin.freeswitch.org/ and find your issue to report to the developers."
|
|
fi
|