X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=usttrace;h=fac84a1de6f3d0d93f547b2c9166c7891bf3bc75;hb=c1f205309da615f1f0c68beedf37365942246537;hp=6cd3bf2194f8d6d6d517a66fd96516751ae68ff3;hpb=524a8072fd7fa9b6f93242495b8435ba4a1d5622;p=ust.git diff --git a/usttrace b/usttrace index 6cd3bf2..fac84a1 100755 --- a/usttrace +++ b/usttrace @@ -3,6 +3,10 @@ # usttrace by Pierre-Marc Fournier 2009 # Distributed under the GPLv2. +function error() { + echo "$0: error: $1" 2>/dev/stderr +} + USTTRACE_DIR="$(dirname $0)" if [ -x "${USTTRACE_DIR}/ustd/ustd" ] ; then # Use the not installed libraries instead @@ -13,6 +17,10 @@ if [ -x "${USTTRACE_DIR}/ustd/ustd" ] ; then else # Use the libraries that the dynamic link finds USTD="ustd" + if [ ! -x "$(which ustd 2>/dev/null)" ]; then + error "cannot find an executable ustd; make sure its location is in the PATH" + exit 1 + fi LIBINTERFORK_PATH="libinterfork.so" LIBMALLOCWRAP_PATH="libmallocwrap.so" LIBUST_PATH="libust.so" @@ -32,10 +40,6 @@ function usage () { echo " -s Use system-wide daemon instead of creating one for this session." 2>/dev/stderr } -function error() { - echo "$0: error: $1" 2>/dev/stderr -} - while getopts ":hlLmfs" options; do case $options in l) arg_preload_libust=1;; @@ -53,12 +57,6 @@ while getopts ":hlLmfs" options; do done shift $(($OPTIND - 1)) -if [ ! -x "$USTD" -a ! -x "$(which ustd 2>/dev/null)" ]; -then - error "specified path to ustd not executable ($USTD)" - exit 1 -fi - # Prepare vars CMD=$* @@ -80,17 +78,24 @@ DATESTRING="$(hostname)-$(date +%Y%m%d%H%M%S)" OUTDIR="$BASE_TRACE_DIR/$DATESTRING" mkdir -p "$OUTDIR" -# Choose socket path -SOCKPATH="/tmp/ust-sock-$$" +# Choose ustd socket path +USTDSOCKPATH="/tmp/ustd-sock-$$" if [ "$arg_syswide_daemon" != "1" ]; then pidfilepath="/tmp/usttrace-$USER-$(date +%Y%m%d%H%M%S%N)-ustd-pid" mkfifo -m 0600 "$pidfilepath" # Start daemon - $USTD --pidfile "$pidfilepath" -s "$SOCKPATH" -o "$OUTDIR" >"$OUTDIR/ustd.log" 2>&1 & + $USTD --pidfile "$pidfilepath" -s "$USTDSOCKPATH" -o "$OUTDIR" >"$OUTDIR/ustd.log" 2>&1 & + # ustd sets up its server socket + # ustd opens the pidfile, blocks because no one has opened it + # we open pidfile + # we block reading pidfile + # ustd writes to pidfile + # ustd closes pidfile + # we unblock reading pidfile USTDPID="$(<$pidfilepath)" - export UST_DAEMON_SOCKET="$SOCKPATH" + export UST_DAEMON_SOCKET="$USTDSOCKPATH" fi # Establish the environment for the command