Date: 2026-05-14
The Golden Pot freeze returned after reinstall/update even though the Elden Ring ERSC profile still showed the patched runner:
$HOME/GPTK/runners/gptk-dsound-nocap-20260513
The latest Steam logs and live Wine processes showed that Steam was actually running from:
/Applications/Game Porting Toolkit.app/Contents/Resources/wine
That meant the profile-specific runner setting was not reaching Wine.
The game launched, audio continued, and opening the world to wanderers through the Golden Pot froze the rendered frame again.
Relevant process and log evidence:
/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wineserver
/Applications/Game Porting Toolkit.app/Contents/Resources/wine/bin/wine64-preloader
DirectSoundCaptureDevice.lock wait timed out
CSteamEngine::BMainLoop appears to have stalled > 15 seconds without event signalled
The GUI correctly passed a per-profile runner through:
env GPTK_WINE_HOME="$HOME/GPTK/runners/gptk-dsound-nocap-20260513"But gptk-launch and gptk-steam both source gptk-common.zsh, and that helper sourced ~/.rippermoon-gptk.env during startup. The config file then exported the default stock GPTK path and overwrote the explicit per-command GPTK_WINE_HOME.
The broken order was:
GUI profile runner -> gptk-steam/gptk-launch -> source config -> stock GPTK wins
gptk-common.zsh now snapshots supported environment overrides before loading ~/.rippermoon-gptk.env, then restores those explicit values after the config is sourced.
The corrected order is:
GUI profile runner -> source config -> restore explicit runner -> patched GPTK wins
The SwiftUI launcher also repairs the default Elden Ring ERSC profile on load and before launch:
requiresSteam = trueprefix = Steamwhen emptywinver = win10when emptynoDXR = truenoEsync = truenativeWinmm = truenativeSteamAPI = truerunnerPath = $HOME/GPTK/runners/gptk-dsound-nocap-20260513when the profile is empty, missing, or pointing at stock GPTK
The GUI update action now reloads profiles after update/install so this repair runs after GitHub updates.
Check that explicit runner overrides survive config loading:
env GPTK_WINE_HOME="$HOME/GPTK/runners/gptk-dsound-nocap-20260513" \
zsh -c 'source "$HOME/GPTK/libexec/gptk-common.zsh"; print -r -- "$GPTK_WINE_HOME"'Expected output:
/Users/USERNAME/GPTK/runners/gptk-dsound-nocap-20260513
Before testing Golden Pot again, stop stale Wine processes from the old runner:
gptk-steam --killIf old stock-GPTK wine64-preloader processes remain after a freeze, terminate those stale processes before relaunching.
The fix is in the shared helper installed to:
$HOME/GPTK/libexec/gptk-common.zsh
and in the SwiftUI launcher source. Updates from GitHub install both pieces. A future update should not revert to stock GPTK for the default ERSC profile unless the user intentionally removes the patched runner or points the profile at another valid custom runner.