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
|
||||
|
||||
@@ -9,7 +9,11 @@ set BT_PLATFORM=glass
|
||||
if not exist "build\Release\btl4.exe" goto badpath
|
||||
if not exist "content\OPERATOR.EGG" goto badpath
|
||||
set BT_RELAY=107.202.218.169:1500
|
||||
rem one fresh log per bat run; the menu->game relaunch chain APPENDS
|
||||
rem so every generation's lines survive (0-byte logs = killed pre-start)
|
||||
if exist content\join.log del content\join.log
|
||||
set BT_LOG=join.log
|
||||
set BT_LOG_APPEND=1
|
||||
set BT_START_INSIDE=1
|
||||
set BT_DEV_GAUGES=1
|
||||
cd content
|
||||
|
||||
@@ -12,7 +12,11 @@ set BT_PLATFORM=glass
|
||||
if not exist "build\Release\btl4.exe" goto badpath
|
||||
if not exist "content\OPERATOR.EGG" goto badpath
|
||||
set BT_RELAY=10.0.0.46:1500
|
||||
rem one fresh log per bat run; the menu->game relaunch chain APPENDS
|
||||
rem so every generation's lines survive (0-byte logs = killed pre-start)
|
||||
if exist content\join.log del content\join.log
|
||||
set BT_LOG=join.log
|
||||
set BT_LOG_APPEND=1
|
||||
set BT_START_INSIDE=1
|
||||
set BT_DEV_GAUGES=1
|
||||
cd content
|
||||
|
||||
@@ -13,7 +13,11 @@ if not exist "content\OPERATOR.EGG" goto badpath
|
||||
set BT_JOYCONFIG=1
|
||||
set BT_START_INSIDE=1
|
||||
set BT_DEV_GAUGES=1
|
||||
rem one fresh log per bat run; the menu->game relaunch chain APPENDS
|
||||
rem so every generation's lines survive (0-byte logs = killed pre-start)
|
||||
if exist content\join.log del content\join.log
|
||||
set BT_LOG=join.log
|
||||
set BT_LOG_APPEND=1
|
||||
set BT_FE_SOLO=1
|
||||
cd content
|
||||
..\build\Release\btl4.exe
|
||||
|
||||
@@ -12,7 +12,11 @@ if not exist "build\Release\btl4.exe" goto badpath
|
||||
if not exist "content\OPERATOR.EGG" goto badpath
|
||||
set BT_START_INSIDE=1
|
||||
set BT_DEV_GAUGES=1
|
||||
rem one fresh log per bat run; the menu->game relaunch chain APPENDS
|
||||
rem so every generation's lines survive (0-byte logs = killed pre-start)
|
||||
if exist content\join.log del content\join.log
|
||||
set BT_LOG=join.log
|
||||
set BT_LOG_APPEND=1
|
||||
set BT_FE_SOLO=1
|
||||
cd content
|
||||
..\build\Release\btl4.exe
|
||||
|
||||
@@ -9,7 +9,9 @@ if not exist "build\Release\btl4.exe" goto badpath
|
||||
if not exist "content\BTL4.RES" goto badpath
|
||||
set BT_PLATFORM=glass
|
||||
set BT_STEAM_NET=1
|
||||
if exist content\steam.log del content\steam.log
|
||||
set BT_LOG=steam.log
|
||||
set BT_LOG_APPEND=1
|
||||
rem Cockpit view + MFD gauges -- the same client flags the join bats set
|
||||
rem (field report: players booted 3rd-person without them). Inherited by
|
||||
rem the menu's mission relaunch.
|
||||
|
||||
Reference in New Issue
Block a user