diff --git a/Cargo.lock b/Cargo.lock index 8fca056..e8b0e2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1652,7 +1652,7 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "lesavka_client" -version = "0.22.9" +version = "0.22.10" dependencies = [ "anyhow", "async-stream", @@ -1686,7 +1686,7 @@ dependencies = [ [[package]] name = "lesavka_common" -version = "0.22.9" +version = "0.22.10" dependencies = [ "anyhow", "base64", @@ -1698,7 +1698,7 @@ dependencies = [ [[package]] name = "lesavka_server" -version = "0.22.9" +version = "0.22.10" dependencies = [ "anyhow", "base64", diff --git a/client/Cargo.toml b/client/Cargo.toml index b4d40c5..bec7c47 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -4,7 +4,7 @@ path = "src/main.rs" [package] name = "lesavka_client" -version = "0.22.9" +version = "0.22.10" edition = "2024" [dependencies] diff --git a/common/Cargo.toml b/common/Cargo.toml index 906f695..236f389 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lesavka_common" -version = "0.22.9" +version = "0.22.10" edition = "2024" build = "build.rs" diff --git a/scripts/install/client.sh b/scripts/install/client.sh index 18aa91e..cf4941e 100755 --- a/scripts/install/client.sh +++ b/scripts/install/client.sh @@ -332,6 +332,33 @@ install_verified_executable() { sudo chmod 0755 "$dest" } +warn_running_stale_client_processes() { + local installed=/usr/local/bin/lesavka-client + local installed_inode="" + installed_inode=$(stat -Lc '%i' "$installed" 2>/dev/null || true) + local stale=() + local pid exe exe_inode cmd + + while read -r pid; do + [[ -n "$pid" ]] || continue + exe=$(readlink "/proc/$pid/exe" 2>/dev/null || true) + [[ -n "$exe" ]] || continue + exe_inode=$(stat -Lc '%i' "/proc/$pid/exe" 2>/dev/null || true) + if [[ "$exe" == *" (deleted)"* || ( -n "$installed_inode" && "$exe_inode" != "$installed_inode" ) ]]; then + cmd=$(tr '\0' ' ' <"/proc/$pid/cmdline" 2>/dev/null || true) + stale+=("pid=$pid exe=$exe cmd=${cmd:-unknown}") + fi + done < <(pgrep -u "$ORIG_USER" -f '(^|/)(lesavka|lesavka-client)( |$|--)' 2>/dev/null || true) + + if ((${#stale[@]} == 0)); then + return + fi + + echo "⚠️ Lesavka is still running from an older/deleted binary." + echo " Close and relaunch Lesavka before judging video/audio performance from this install." + printf ' %s\n' "${stale[@]}" +} + pacman_install() { local log_file log_file=$(mktemp --tmpdir="$TMPDIR" lesavka-pacman.XXXXXX.log) @@ -567,6 +594,7 @@ echo " Desktop entry: /usr/share/applications/lesavka.desktop" echo " Build source: $SRC/target/release/lesavka-client" echo " TLS identity: $CLIENT_PKI_DIR" echo " Captures: $CLIENT_CAPTURE_DIR" +warn_running_stale_client_processes echo "✅ Installed version: lesavka-client ${INSTALLED_VERSION:-unknown}${INSTALLED_SHA:+ ($INSTALLED_SHA)}" echo echo "Quick start:" diff --git a/server/Cargo.toml b/server/Cargo.toml index bb9e232..ffd58b9 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -10,7 +10,7 @@ bench = false [package] name = "lesavka_server" -version = "0.22.9" +version = "0.22.10" edition = "2024" autobins = false diff --git a/tests/installer/scripts/install/client_install_script_contract.rs b/tests/installer/scripts/install/client_install_script_contract.rs index 001bd2b..80661f9 100644 --- a/tests/installer/scripts/install/client_install_script_contract.rs +++ b/tests/installer/scripts/install/client_install_script_contract.rs @@ -84,7 +84,10 @@ fn client_install_reports_nvidia_and_open_source_media_routes() { for expected in [ "report_client_media_acceleration", "refresh_gstreamer_registry_cache", + "warn_running_stale_client_processes", "Refreshing GStreamer plugin registry", + "Lesavka is still running from an older/deleted binary.", + "Close and relaunch Lesavka before judging video/audio performance", "run_as_user rm -f \"$USER_HOME/.cache/gstreamer-1.0\"/registry.*", "gst-inspect-1.0 nvcodec", "gst-inspect-1.0 va",