Boot forensics: first-breath log line + generation-safe bat logging
Field 2026-07-23 (second night): a player's join.bat failed 3x in a row with a 0-byte join.log -- indistinguishable from 'never ran'. Two causes of evidence loss fixed: 1. The first flushed log line now happens the INSTANT the log opens (version, pid, args, first-process vs relaunched-generation). An empty log after this build means the exe was killed before WinMain -- an external cause (antivirus/loader), not ours. 2. The menu->game relaunch chain truncated join.log each generation (BT_LOG_APPEND was unset in the player bats): the crashed generation's evidence was erased by the next attempt. The bats now delete the log once per bat run and append across generations. Also explains the confusing 'The game has exited' bat message on SUCCESSFUL launches (the menu process exits after relaunching the game detached) -- the log now records the whole chain.
This commit is contained in:
@@ -197,6 +197,17 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
||||
? (std::ios::out | std::ios::app) : std::ios::out);
|
||||
std::cout.rdbuf(logfile.rdbuf());
|
||||
|
||||
// FIRST-BREATH line, flushed IMMEDIATELY (field 2026-07-23: a player's
|
||||
// exe died repeatedly with a 0-byte join.log -- indistinguishable from
|
||||
// "never ran"). After this line, an empty log can only mean the exe was
|
||||
// killed before WinMain (antivirus / loader) -- an external cause, not
|
||||
// ours. Cheap forensics: version, PID, args, generation markers.
|
||||
std::cout << "[boot] btl4 " << BT_VERSION_STRING << " pid="
|
||||
<< (unsigned)GetCurrentProcessId()
|
||||
<< " args='" << (lpCmdLine ? lpCmdLine : "") << "'"
|
||||
<< (getenv("BT_FE_LOOP") ? " (relaunched generation)" : " (first process)")
|
||||
<< std::endl << std::flush;
|
||||
|
||||
// BT_JOYCONFIG=1: the generic-joystick capture wizard (flight sticks /
|
||||
// HOTAS / pedals -- L4JOY.h). Console prompts detect which device/axis
|
||||
// the player moves for each pod control and write the joystick section
|
||||
|
||||
Reference in New Issue
Block a user