The previous commit's attribution was wrong and is corrected in the roadmap. WRONG: 'the crash is the skeleton walk's' rested on 0 crashes in 2 runs with the walk disabled -- a 25% coin flip presented as evidence. The oldest preserved dump has no [skl] line and ends on the old 'couldn't figure out how to MakeEntityRenderables' fallback, so it predates the walk and faults identically. WRONG: 'it lands at different points each time'. Every dump carries the same numbers to the byte (cr2 7000FA64, EIP 66D9). What varies is how far the log gets, not where the fault is. Resolving the address through btl4opt.map names it exactly: EulerAngles::operator=(const LinearMatrix&)+0x19, a read through the matrix reference. A binary scan finds all three call sites of that operator pass a stack local, so the 1.79GB pointer still has no static explanation -- that is now its own open item rather than a guess. Two theories killed cleanly by the new BT_STACK_LOG probe and a binary scan: ESP drift (drift=0 over 2002 frames; exactly one callee-cleans function exists in the whole binary) and an undersized stack (our PE and the shipped one have identical 1MB/8K geometry). What the probe found matters more: the application is parked in state=2, which is LoadingMission, not WaitingForLaunch. Priority 0 is where the interest manager queues renderer events during load, the gate needs that priority empty, and it never empties -- so the mission never launches and the renderer holds a blank screen by design. The fault arrives ~30s into that wait. Runs that DO launch never print a single [launch] line. So 'crashes half the time' and 'hangs during load' are one event seen twice. A 15x disagreement between two clocks looked like a reconstruction slip -- BTL4.CPP passes GetTicksPerSecond() where ApplicationManager wants a frame rate. Checked against the shipped binary before touching it: same instruction sequence, same kind of static float pushed. Authentic. Documented so nobody 'fixes' it. Also swept every subsystem DefaultData against its real C++ base. Fifteen chain past their immediate parent, but fourteen skip only classes that add no handlers and no attributes, and no class's attribute-ID base disagrees with its index chain -- so there are no gap slots there. The one real defect: Generator is a HeatSink but chained to Subsystem::MessageHandlers, so it ignored every ToggleCooling message. Fixed (compiles next build). Tooling: podrun.sh stages the build over BTL4REC.EXE, exports the host-side VPX board env -- without which the run dies at the iserver handshake rather than merely rendering nothing -- and archives every run's log, marking it -CRASH when it faulted. Before this the only preserved dump was an accident, on a rig where each run costs four minutes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
80 lines
3.9 KiB
Plaintext
80 lines
3.9 KiB
Plaintext
BattleTech v4.10
|
|
BTL4Application::BTL4Application
|
|
GaugeInterpreter: undefined label 'Initialization'
|
|
[exp] master player experience=2 simLive=1 heatModelOn=1 advDamage=1
|
|
[role] 'Role::Default' lives=1000 killBonus=500 dmgMod=1
|
|
[torso] horizJoint 'jointtorso' -> 0x00a3fe78 type=1 enabled=1
|
|
[weap] 'AFC100' seg=13 mount=sitelgunport rear=0
|
|
[proj] 'AFC100' ammoBinIndex=21 -> AmmoBinAFC100 (rounds=20)
|
|
[weap] 'ERLLaser' seg=7 mount=siterugunport rear=0
|
|
[weap] 'ERSLaser_1' seg=13 mount=sitelgunport rear=0
|
|
[weap] 'ERSLaser_2' seg=8 mount=siterdgunport rear=0
|
|
[weap] 'LRM15_1' seg=18 mount=sitelmissleport rear=0
|
|
[proj] 'LRM15_1' ammoBinIndex=26 -> AmmoBinLRM15_1 (rounds=16)
|
|
[weap] 'LRM15_2' seg=19 mount=sitermissleport rear=0
|
|
[proj] 'LRM15_2' ammoBinIndex=28 -> AmmoBinLRM15_2 (rounds=16)
|
|
[mech] segment walk done: subsystemCount=32 weaponCount=6
|
|
[skel] jointSubsystem=0x009e6d84 jointCount=25
|
|
[mech] model params: walkTR=65 runTR=40 maxAcc=20 throttleAdj=0.8 (deg,deg,u/s^2,scale)
|
|
[mech] look angles: L=50 R=-50 F=-15 B=0 (deg)
|
|
[mech] damage zones streamed: 22 [dz_dtorso,dz_hip,dz_larm,dz_ldleg,dz_ldoor,dz_lfoot,dz_lgun,dz_ltorso,dz_luleg,dz_rarm,dz_rdleg,dz_rdoor,dz_reardtorso,dz_rearltorso,dz_rearrtorso,dz_rearutorso,dz_rfoot,dz_rgun,dz_rtorso,dz_ruleg,dz_searchlight,dz_utorso]
|
|
[cyl] table 'madcat' LOADED rows=7
|
|
[valve] 'Condenser1' valve=1 flow=0.166667
|
|
[valve] 'Condenser2' valve=1 flow=0.166667
|
|
[valve] 'Condenser3' valve=1 flow=0.166667
|
|
[valve] 'Condenser4' valve=1 flow=0.166667
|
|
[valve] 'Condenser5' valve=1 flow=0.166667
|
|
[valve] 'Condenser6' valve=1 flow=0.166667
|
|
[mapper] ctor id=0 throttleAttr=0x002c30f8 controlModeAttr=0x002c3134
|
|
[gau2] cluster slot=14 classID=3011 auxScreen=5 name=Avionics
|
|
[gau2] cluster slot=15 classID=3014 auxScreen=6 name=Myomers
|
|
[gau2] cluster slot=22 classID=3021 auxScreen=1 name=AFC100
|
|
[gau2] cluster slot=23 classID=3016 auxScreen=10 name=ERLLaser
|
|
[gau2] cluster slot=24 classID=3016 auxScreen=3 name=ERSLaser_1
|
|
[gau2] cluster slot=25 classID=3016 auxScreen=12 name=ERSLaser_2
|
|
[gau2] cluster slot=27 classID=3024 auxScreen=2 name=LRM15_1
|
|
[gau2] cluster slot=29 classID=3024 auxScreen=9 name=LRM15_2
|
|
ColorMapperArmor warning: damage zone dz_missle not found
|
|
ColorMapperArmor warning: damage zone dz_missle not found
|
|
ColorMapperArmor warning: damage zone dz_lmissle not found
|
|
ColorMapperArmor warning: damage zone dz_rmissle not found
|
|
ColorMapperArmor warning: damage zone dz_ftorso not found
|
|
ColorMapperArmor warning: damage zone dz_btorso not found
|
|
[link] InitializePlayerLink -> vehicle playerLink=0x00ac513c
|
|
[launch] state=11 minPriorityEmpty=0
|
|
[launch] state=11 minPriorityEmpty=0
|
|
[launch] state=11 minPriorityEmpty=0
|
|
[launch] state=11 minPriorityEmpty=0
|
|
[launch] state=11 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[stack] frame at 0x12dee7 drift=0 over 1001 frames
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[launch] state=2 minPriorityEmpty=0
|
|
[stack] frame at 0x12dee7 drift=0 over 2002 frames
|
|
[launch] state=2 minPriorityEmpty=0
|
|
Reference to a page you don't own
|
|
PF cr2= 7000 FA64 at 00FF 0000 66D9
|
|
Unhandled exception 000E at 00FF 66D9 ErrCode 0004
|