tools: give launch_mission a boot-timeout knob and an extra-flags hook

Both exist for one diagnostic. KeWaitForSingleObject is declared kHighFrequency,
so it is silent even at LOG_LEVEL=3 unless
--log_high_frequency_kernel_calls=true is passed - and that flag writes ~157 MB
in ten minutes and slows the emulator so far that the title had still not
appeared when skip_intro's fixed 600 s budget ran out. The run was then scored
"BOOT FAILED" when it was only slow.

EXTRA_FLAGS passes one-off diagnostic cvars without making them defaults;
SKIP_INTRO_TIMEOUT lets a deliberately-slowed run have the time it needs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PMRJjbxLqZtsb5Vb7KunPE
This commit is contained in:
Sylpheed RE agent
2026-08-24 01:37:28 +00:00
parent cd2704c2ac
commit 99d94146b4

View File

@@ -58,10 +58,20 @@ XUID="${SYLPH_XUID:-$(ls "${XENIA_CONTENT:-$HOME/.local/share/Xenia/content}" 2>
[ -n "$XUID" ] || { echo "NO PROFILE on disc"; exit 2; }
LOG="${LAUNCH_MISSION_LOG:-$SHOTS/launch_mission-canary.stdout}"
echo "signing in profile $XUID; emulator log: $LOG"
# EXTRA_FLAGS is for one-off diagnostics that should not become defaults --
# e.g. --log_high_frequency_kernel_calls=true, which is the only way to see
# KeWaitForSingleObject at all (it is declared kHighFrequency and is therefore
# silent even at LOG_LEVEL=3).
# shellcheck disable=SC2086
nohup run-canary --apu=sdl --log_mask="${LOG_MASK:-13}" --log_level="${LOG_LEVEL:-2}" \
--logged_profile_slot_0_xuid="$XUID" </dev/null >"$LOG" 2>&1 &
--logged_profile_slot_0_xuid="$XUID" ${EXTRA_FLAGS:-} </dev/null >"$LOG" 2>&1 &
sleep 5
"$SD/skip_intro.sh" 600 || { echo "BOOT FAILED (skip_intro exit $?)"; exit 1; }
# The boot budget is a knob because one diagnostic blows straight through the
# default: --log_high_frequency_kernel_calls=true writes ~157 MB in ten minutes
# and the title had still not appeared, so skip_intro timed out and the run was
# scored a BOOT FAILED when it was only slow.
"$SD/skip_intro.sh" "${SKIP_INTRO_TIMEOUT:-600}" \
|| { echo "BOOT FAILED (skip_intro exit $?)"; exit 1; }
sleep 14 # main menu is not input-ready before this
step down # NEW GAME -> LOAD GAME