X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=usttrace;h=c90ee9d8e44f64cf81a443155c3610f7675c6151;hb=31d392f1a565abd0751302d8c52b9f9e695e051e;hp=fac84a1de6f3d0d93f547b2c9166c7891bf3bc75;hpb=155887202b20bc1c5e9b4c6054a80135c3273d32;p=ust.git diff --git a/usttrace b/usttrace index fac84a1..c90ee9d 100755 --- 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" @@ -84,6 +100,7 @@ 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 "$USTDSOCKPATH" -o "$OUTDIR" >"$OUTDIR/ustd.log" 2>&1 & @@ -128,12 +145,6 @@ fi export LD_PRELOAD="$LD_PRELOAD:$LIBINTERFORK_PATH" fi -# Install a handler for SIGIO. This is the signal that will be sent by ustd to -# the traced program to trigger the creation of its listener thread. However, -# it is possible that the SIGIO will be sent after the shell fork, but before -# the exec of the command. If this handler isn't there, bash might terminate -# because of a unhandled signal. - # Execute the command $CMD 2>&1 ) | tee "$OUTDIR/app.log"