123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- #!/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="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 --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 wget or 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 | grep parent_pid | awk -F \" '{print $6}'`
- echo "Please report http://pastebin.freeswitch.org/$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
|