usttrace: add signal handler to prevent ustd from keeping running after usttrace...
[ust.git] / usttrace
index 15336f638d91ab7133842d149456667b3033d162..4f6f1f26bf9241d67f8c0f8647e9be05ad03887c 100755 (executable)
--- a/usttrace
+++ b/usttrace
@@ -7,6 +7,22 @@ function error() {
        echo "$0: error: $1" 2>/dev/stderr
 }
 
+function sighandler() {
+       echo "Caught Ctrl-C"
+       if [ -z "$USTDPID" ]; then
+               USTDPID="$(<$pidfilepath)"
+       fi
+       # Tell the daemon to die
+       kill -SIGTERM "$USTDPID"
+
+       echo "Waiting for ustd to shutdown..."
+       wait "$USTDPID"
+
+       rm "$pidfilepath"
+
+       exit 0;
+}
+
 USTTRACE_DIR="$(dirname $0)"
 if [ -x "${USTTRACE_DIR}/ustd/ustd" ] ; then
     # Use the not installed libraries instead
@@ -23,7 +39,7 @@ else
     fi
     LIBINTERFORK_PATH="libinterfork.so"
     LIBMALLOCWRAP_PATH="libmallocwrap.so"
-    LIBUST_PATH="libust.so"
+    LIBUST_PATH="libust.so.0"
 fi
 
 BASE_TRACE_DIR="${HOME}/.usttraces"
@@ -78,15 +94,16 @@ 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"
+       trap "sighandler $pidfilepath" SIGINT
        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
@@ -95,7 +112,7 @@ then
        # 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.024538 seconds and 4 git commands to generate.