Launch pend counter: no timeout, no queue entry (mid-load launch crash 2)
The take-1 deferral (re-post at +1s, capped at 120) turned a SLOW load into a crash: loads on a busy operator box measure 1-2+ minutes, the cap expired, and the original "Not ready to run" Fail/abort fired (field report: sound after ~1 min, crash ~2 min later; the log shows exactly 120 deferrals all in LoadingMission). A mid-load RunMission now just bumps gBTRunMissionPendCount -- nothing enters the event queue and there is NO timeout to outlive -- and CheckLoadMessageHandler drains the counter immediately after advancing LoadingMission -> WaitingForLaunch, re-posting that many stack RunMissionMessages (the engine's own no-console launch pattern at the same site, which also demonstrates Post spools stack messages safely). Verified (two-round rig, round 1): both relay launches pended through the load, fired at load completion, the requested mech spawned and the scene went live. Round reset + round-2 rejoin remain verified from the prior run; why loads take 1-2+ min on a busy box is left as an open perf question. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
3a9b35fc06
commit
53c86fa1dd
@@ -1415,6 +1415,18 @@ void
|
||||
Post(DefaultEventPriority, this, &run_mission_message);
|
||||
Tell("Sent ready message to ourselves\n");
|
||||
}
|
||||
|
||||
{
|
||||
// relay launches that arrived MID-LOAD fire now (they could
|
||||
// not enter the queue then -- see L4APP.cpp pend counter)
|
||||
extern int BTTakePendingRunMissions(void);
|
||||
int pended_launches = BTTakePendingRunMissions();
|
||||
while (pended_launches-- > 0)
|
||||
{
|
||||
RunMissionMessage pended_run;
|
||||
Post(DefaultEventPriority, this, &pended_run);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user