fix usttrace -l
[ust.git] / usttrace
index 6cd3bf2194f8d6d6d517a66fd96516751ae68ff3..a60440c8e0039e4feee4ae0e9f3629cb3020372e 100755 (executable)
--- 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,9 +17,13 @@ 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"
+    LIBUST_PATH="libust.so.0"
 fi
 
 BASE_TRACE_DIR="${HOME}/.usttraces"
@@ -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
This page took 0.02366 seconds and 4 git commands to generate.