The problem
When a launch fails, gamebridge launch --wait currently looks the same as a slow start until the
timeout expires. It does poll process.poll() and reports a non-zero exit, but it says nothing
about why.
This is not hypothetical: the first real launch during #6 crashed on a duplicated
--quickPlaySingleplayer, and the diagnosis came from reading crash-reports/ by hand.
The proposal
On a non-zero exit, find the newest file in the instance's crash-reports/, and print its path plus
the exception line:
launch: the game exited with code 1 after 12s
launch: crash-reports/crash-2026-08-04_20.39.11-client.txt
launch: joptsimple.MultipleArgumentsForOptionException: Found multiple arguments for option quickPlaySingleplayer
Worth also checking logs/latest.log for a fatal line when there is no crash report, since some
failures never produce one.
Why the launcher and not the mod
The mod is not running. This is entirely on the side that owns the process handle.
Notes
- Should only consider crash reports newer than the launch, or it will confidently report last
week's crash.
The problem
When a launch fails,
gamebridge launch --waitcurrently looks the same as a slow start until thetimeout expires. It does poll
process.poll()and reports a non-zero exit, but it says nothingabout why.
This is not hypothetical: the first real launch during #6 crashed on a duplicated
--quickPlaySingleplayer, and the diagnosis came from readingcrash-reports/by hand.The proposal
On a non-zero exit, find the newest file in the instance's
crash-reports/, and print its path plusthe exception line:
Worth also checking
logs/latest.logfor a fatal line when there is no crash report, since somefailures never produce one.
Why the launcher and not the mod
The mod is not running. This is entirely on the side that owns the process handle.
Notes
week's crash.