Project

General

Profile

Bug #1421 » repro.sh

Kienan Stewart, 04/11/2025 12:01 PM

 
#!/usr/bin/env bash

TRACING_USERS="${TRACING_USERS:-1}"
TRACING_USER_1=root
TRACING_USER_2=kstewart
QDISC_DELAY="${QDISC_DELAY:-300ms}"
GEN_WAIT="${GEN_WAIT:-1000000}"

KILL_TIMEOUT="${KILL_TIMEOUT:-3}"
USE_LIBTOOL="${USE_LIBTOOL:-1}" # Set to 0 to run via search path instead
BT2_PATH="$(realpath "${BT2_PATH:-../babeltrace2}")"
TOOLS_PATH="$(realpath "${TOOLS_PATH:-../lttng-tools}")"
TRACE_DIR="$(realpath "${TRACE_DIR:-./trace}")"

BABELTRACE_LOG_FILE="$(realpath "${BABELTRACE_LOG_FILE:-babeltrace.log}")"
RELAYD_LOG_FILE="$(realpath "${RELAYD_LOG_FILE:-relayd.log}")"
SESSIOND_LOG_FILE="$(realpath "${SESSIOND_LOG_FILE:-sessiond.log}")"

babeltrace="$(command -v babeltrace2)"
lttng="$(command -v lttng)"
lttng_sessiond="$(command -v lttng-sessiond)"
lttng_relayd="$(command -v lttng-relayd)"
gen_ust="${TOOLS_PATH}/tests/utils/testapp/gen-ust-events/gen-ust-events"

if [[ "${USE_LIBTOOL}" != "0" ]] ; then
babeltrace="libtool --mode=execute ${BT2_PATH}/src/cli/babeltrace2"
lttng="libtool --mode=execute ${TOOLS_PATH}/src/bin/lttng/lttng"
lttng_sessiond="libtool --mode=execute ${TOOLS_PATH}/src/bin/lttng-sessiond/lttng-sessiond"
lttng_relayd="libtool --mode=execute ${TOOLS_PATH}/src/bin/lttng-relayd/lttng-relayd"
gen_ust="libtool --mode=execute ${gen_ust}"
fi

function _stop_by_pgrep()
{
local PROC="${1}"
local RETRY_INTERVAL="${3:-1}"
local TIMEOUT="${2:-${KILL_TIMEOUT}}"
local TRIES=0

while pgrep "${PROC}" ; do
if [[ "${TRIES}" -gt "${TIMEOUT}" ]] ; then
killall -9 "${PROC}"
sleep "${RETRY_INTERVAL}"
continue
fi
killall "${PROC}"
sleep "${RETRY_INTERVAL}"
TRIES=$((TRIES+1))
done
}

function stop_sessiond()
{
_stop_by_pgrep lttng-sessiond
}

function stop_relayd()
{
_stop_by_pgrep lttng-relayd
}

rm "${BABELTRACE_LOG_FILE}"
rm "${RELAYD_LOG_FILE}"
rm "${SESSIOND_LOG_FILE}"
rm -rf "${TRACE_DIR:-}"

$lttng_sessiond -vvv --verbose-consumer &> "${SESSIOND_LOG_FILE}" &
sleep 3

TRACEE_PIDS=()

TRACED_APPS_COUNT=0
for i in $(seq $TRACING_USERS) ; do
VAR_NAME="TRACING_USER_$i"
if [[ -n "${!VAR_NAME}" ]] ; then
su "${!VAR_NAME}" -- $gen_ust -i 10000000 -w $GEN_WAIT &
TRACEE_PIDS+=($!)
TRACED_APPS_COUNT=$((TRACED_APPS_COUNT+1))
fi
done

$lttng create --live
$lttng enable-event -u --all
$lttng start

START="$(date +%s.%N)"
tc qdisc add dev lo root netem delay $QDISC_DELAY
time $lttng destroy
END="$(date +%s.%N)"

echo -e "$TRACED_APPS_COUNT\t$QDISC_DELAY\t$START\t$END\t$(bc <<< "$END - $START")" >> results
# Cleanup
stop_sessiond
_stop_by_pgrep gen-ust-events
tc qdisc del dev lo root
kill "${TRACEE_PIDS[@]}"
(2-2/7)