BT410 5.3.58: the load gate is blocked by a REFILL loop on priority 0, not starvation

Per-priority occupancy, measured every second until the fault:

  [queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1

That single line kills the two leading theories.  p3/p4 empty means nothing
above priority 0 is competing, so the pump is free to serve it -- no
starvation.  nextReady=1 means PeekAtNextEvent always has a READY event, so
priority 0 is not holding a timed event whose alarm never comes due -- no
deadlock.  What remains is refill: priority 0 is replenished as fast as the
pump drains it, ~143 events per simulated second.

It is also fully deterministic.  Two runs of the same binary reported
pump=352/1499 at frame 1001 and 495/2643 at frame 2002, identical to the byte.
So 'crashes about half the time' was never a race -- it was comparing runs that
differed in binary or conf.

Only InterestManager::PostRendererEvent posts at priority 0 (it maps every
renderer event there while the app is not RunningMission), so naming the
message names the flooder.  Application::Post now tallies priority-0 posts by
message ID and reports the busiest three.  Notably, all three producers of
NotifyOfNewInterestingEntity are entity-CREATION paths, so if that ID dominates
then something is creating entities in a loop -- which would explain the
unbounded growth behind the fault as well as the hang.

pod_render_noskl.conf now carries the same probes, so one instrumented binary
can be run with the skeleton walk on and off.  Walk-off runs are the only
configuration of ours known to reach 'Turning Plasma Score Display On'.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-28 22:20:11 -05:00
co-authored by Claude Fable 5
parent 4cf09917ce
commit d3b332a62a
13 changed files with 2848 additions and 1965 deletions
+55
View File
@@ -0,0 +1,55 @@
LOG: Early LOG Init complete
LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_rec.conf
LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src
LOG: Logging init: beginning logging proper. This is the end of the early init logging
LOG: Logging: No logfile was given. All further logging will be discarded.
LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit)
LOG: Prevent capture: 0
LOG: SDL: version 2.32.10, Video windows, Audio directsound
LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended.
LOG: Windows keyboard layout ID is 0x0409
LOG: Host keyboard layout is now us (US English)
LOG: Mapper keyboard layout is now us (US English)
LOG: SDL2 reports desktop display mode 3440 x 1440
LOG: OpenGL Version : 4.6.0 NVIDIA 610.47
LOG: Configured windowposition: -
LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888
LOG: SDL: You are running in 24 bpp mode, this will slow down things!
LOG: Releasing keyboard
LOG: SDL: Windows 11 round corners will be disabled.
LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI)
LOG: ISA BCLK: 8333333.333Hz (25000000/3)
LOG: monopal: green,
LOG: Active save slot: 1 [Empty]
LOG: USING AVI+ZMBV
LOG: Pentium CMPXCHG8B emulation is enabled
LOG: Max 1073741824 sz 32768
LOG: Final 32768
LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB
LOG: VPXLOG: live render backend started
LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt'
LOG: MIDI:Opened device:win32
LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone)
LOG: One joystick reported, initializing with 4axis
LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s)
LOG: VOODOO LFB now at d0000000
LOG: Serial1: BASE 3f8h
LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16)
LOG: Serial1: namedpipe connected to \\.\pipe\vrio
LOG: Serial2: BASE 2f8h
LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1)
LOG: Serial2: namedpipe connected to \\.\pipe\vplasma
LOG: Serial3: BASE 3e8h
LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt
LOG: Parallel1: BASE 378h
LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h
LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false.
LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true.
LOG: Allocated APM BIOS pm entry point at f000:ce40
LOG: Writing code to fce40
LOG: Writing code to fce60
LOG: Windows: IID_ITaskbarList3 is available
LOG: ISA Plug & Play BIOS enabled
LOG: VGA ROM BIOS init callback
LOG: pixratio 1.000, dw false, dh false
LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750
+79
View File
@@ -0,0 +1,79 @@
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
+79
View File
@@ -0,0 +1,79 @@
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 events=0 ticks=10873
[launch] state=11 minPriorityEmpty=0 events=0 ticks=11884
[launch] state=11 minPriorityEmpty=0 events=0 ticks=12892
[launch] state=11 minPriorityEmpty=0 events=0 ticks=13900
[launch] state=11 minPriorityEmpty=0 events=0 ticks=14908
[launch] state=2 minPriorityEmpty=0 events=0 ticks=16006
[launch] state=2 minPriorityEmpty=0 events=0 ticks=17032
[launch] state=2 minPriorityEmpty=0 events=0 ticks=18092
[launch] state=2 minPriorityEmpty=0 events=0 ticks=19153
[launch] state=2 minPriorityEmpty=0 events=0 ticks=20214
[launch] state=2 minPriorityEmpty=0 events=0 ticks=21275
[launch] state=2 minPriorityEmpty=0 events=0 ticks=22336
[launch] state=2 minPriorityEmpty=0 events=0 ticks=23396
[launch] state=2 minPriorityEmpty=0 events=0 ticks=24457
[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24729 pump=352/1499
[launch] state=2 minPriorityEmpty=0 events=0 ticks=25518
[launch] state=2 minPriorityEmpty=0 events=0 ticks=26579
[launch] state=2 minPriorityEmpty=0 events=0 ticks=27640
[launch] state=2 minPriorityEmpty=0 events=0 ticks=28701
[launch] state=2 minPriorityEmpty=0 events=0 ticks=29762
[launch] state=2 minPriorityEmpty=0 events=0 ticks=30821
[launch] state=2 minPriorityEmpty=0 events=0 ticks=31881
[launch] state=2 minPriorityEmpty=0 events=0 ticks=32942
[launch] state=2 minPriorityEmpty=0 events=0 ticks=34003
[launch] state=2 minPriorityEmpty=0 events=0 ticks=35063
[launch] state=2 minPriorityEmpty=0 events=0 ticks=36126
[launch] state=2 minPriorityEmpty=0 events=0 ticks=37187
[launch] state=2 minPriorityEmpty=0 events=0 ticks=38248
[launch] state=2 minPriorityEmpty=0 events=0 ticks=39309
[launch] state=2 minPriorityEmpty=0 events=0 ticks=40370
[launch] state=2 minPriorityEmpty=0 events=0 ticks=41431
[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=41586 pump=495/2643
[launch] state=2 minPriorityEmpty=0 events=0 ticks=42493
Reference to a page you don't own
PF cr2= 7000 FA64 at 00FF 0000 66D9
Unhandled exception 000E at 00FF 66D9 ErrCode 0004
@@ -0,0 +1,99 @@
LOG: Early LOG Init complete
LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_rec.conf
LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src
LOG: Logging init: beginning logging proper. This is the end of the early init logging
LOG: Logging: No logfile was given. All further logging will be discarded.
LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit)
LOG: Prevent capture: 0
LOG: SDL: version 2.32.10, Video windows, Audio directsound
LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended.
LOG: Windows keyboard layout ID is 0x0409
LOG: Host keyboard layout is now us (US English)
LOG: Mapper keyboard layout is now us (US English)
LOG: SDL2 reports desktop display mode 3440 x 1440
LOG: OpenGL Version : 4.6.0 NVIDIA 610.47
LOG: Configured windowposition: -
LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888
LOG: SDL: You are running in 24 bpp mode, this will slow down things!
LOG: Releasing keyboard
LOG: SDL: Windows 11 round corners will be disabled.
LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI)
LOG: ISA BCLK: 8333333.333Hz (25000000/3)
LOG: monopal: green,
LOG: Active save slot: 1 [Empty]
LOG: USING AVI+ZMBV
LOG: Pentium CMPXCHG8B emulation is enabled
LOG: Max 1073741824 sz 32768
LOG: Final 32768
LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB
LOG: VPXLOG: live render backend started
LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt'
LOG: MIDI:Opened device:win32
LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone)
LOG: One joystick reported, initializing with 4axis
LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s)
LOG: VOODOO LFB now at d0000000
LOG: Serial1: BASE 3f8h
LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16)
LOG: Serial1: namedpipe connected to \\.\pipe\vrio
LOG: Serial2: BASE 2f8h
LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1)
LOG: Serial2: namedpipe connected to \\.\pipe\vplasma
LOG: Serial3: BASE 3e8h
LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt
LOG: Parallel1: BASE 378h
LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h
LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false.
LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true.
LOG: Allocated APM BIOS pm entry point at f000:ce40
LOG: Writing code to fce40
LOG: Writing code to fce60
LOG: Windows: IID_ITaskbarList3 is available
LOG: ISA Plug & Play BIOS enabled
LOG: VGA ROM BIOS init callback
LOG: pixratio 1.000, dw false, dh false
LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750
LOG: WARNING: No translation support (to host) for code page 0
LOG: DOS keyboard layout loaded with main language code US for layout us
LOG: XMS: 50 handles allocated for use by the DOS environment
LOG: EMS page frame at 0xe000-0xefff
LOG: COMMAND.COM env size: 720 bytes
LOG: COMMAND.COM environment block: 0x0701 sz=0x002d
LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a
LOG: COMMAND.COM stack: 0x0749
LOG: pixratio 1.350, dw false, dh false
LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750
LOG: SHELL:Redirect output to COM3
VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00)
LOG: 184935189 ERROR MOUSE:Unhandled videomode 79 on reset
LOG: pixratio 1.000, dw false, dh false
LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750
VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]00000000/0 [44]bf6ae9ee/-0.917632 [48]ffffffff/nan
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: 619106628 ERROR INT10:PutPixel unhandled mode type 7
LOG: SHELL:Redirect output to RC.TXT
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:471 (IF0:5), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:503 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:503 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:528 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:210 (IF0:0), TX:0, Break 0
+103
View File
@@ -0,0 +1,103 @@
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 ticks=10859
[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=-
[launch] state=11 minPriorityEmpty=0 ticks=11870
[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=-
[launch] state=11 minPriorityEmpty=0 ticks=12878
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=11 minPriorityEmpty=0 ticks=13886
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=11 minPriorityEmpty=0 ticks=14894
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=15992
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=17021
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=18082
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=19142
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=20203
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=21264
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=22324
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=23385
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=24446
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24718 pump=352/1499
[launch] state=2 minPriorityEmpty=0 ticks=25508
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=26569
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=27630
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=28691
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=29752
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=30812
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=31873
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=32933
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=33994
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=35055
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=36118
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=37178
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=38239
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
[launch] state=2 minPriorityEmpty=0 ticks=39300
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=-
Reference to a page you don't own
PF cr2= 7000 FA64 at 00FF 0000 66D9
Unhandled exception 000E at 00FF 66D9 ErrCode 0004
+123
View File
@@ -0,0 +1,123 @@
LOG: Early LOG Init complete
LOG: CONFIG: Loaded config file: C:/VWE/TeslaRel410/emulator/render-bridge/pod_render_rec.conf
LOG: DOSBox-X's working directory: C:\VWE\TeslaRel410\emulator\src\src
LOG: Logging init: beginning logging proper. This is the end of the early init logging
LOG: Logging: No logfile was given. All further logging will be discarded.
LOG: DOSBox-X version 2026.06.02 Commit d75a57c (MinGW SDL2 64-bit)
LOG: Prevent capture: 0
LOG: SDL: version 2.32.10, Video windows, Audio directsound
LOG: EXPERIMENTAL: Debugger enabled for MinGW build, DOSBox-X crashes depending on the terminal software you use. Launching from command prompt (cmd.exe) is recommended.
LOG: Windows keyboard layout ID is 0x0409
LOG: Host keyboard layout is now us (US English)
LOG: Mapper keyboard layout is now us (US English)
LOG: SDL2 reports desktop display mode 3440 x 1440
LOG: OpenGL Version : 4.6.0 NVIDIA 610.47
LOG: Configured windowposition: -
LOG: SDL: Current window pixel format: SDL_PIXELFORMAT_RGB888
LOG: SDL: You are running in 24 bpp mode, this will slow down things!
LOG: Releasing keyboard
LOG: SDL: Windows 11 round corners will be disabled.
LOG: Screen report: Method 'Win98base' (3440.000 x 1440.000 pixels) at (0.000 x 0.000) (910.167 x 381.000 mm) (35.833 x 15.000 in) (96.000 x 96.000 DPI)
LOG: ISA BCLK: 8333333.333Hz (25000000/3)
LOG: monopal: green,
LOG: Active save slot: 1 [Empty]
LOG: USING AVI+ZMBV
LOG: Pentium CMPXCHG8B emulation is enabled
LOG: Max 1073741824 sz 32768
LOG: Final 32768
LOG: Final arrangement: Below 4GB = 32768KB, Above 4GB = 0KB
LOG: VPXLOG: live render backend started
LOG: VPXLOG: base 0x150 respond=1 handshakes=3 log='C:\Users\cyd\AppData\Local/Temp/vwe-pod/vpxresp.txt'
LOG: MIDI:Opened device:win32
LOG: mic_input: Selected microphone device: Microphone (Steam Streaming Microphone)
LOG: One joystick reported, initializing with 4axis
LOG: Using joystick Xbox One Controller with 6 axes, 16 buttons and 1 hat(s)
LOG: VOODOO LFB now at d0000000
LOG: Serial1: BASE 3f8h
LOG: Serial1: namedpipe client of \\.\pipe\vrio (poll 0.10ms burst x16)
LOG: Serial1: namedpipe connected to \\.\pipe\vrio
LOG: Serial2: BASE 2f8h
LOG: Serial2: namedpipe client of \\.\pipe\vplasma (poll 1.00ms burst x1)
LOG: Serial2: namedpipe connected to \\.\pipe\vplasma
LOG: Serial3: BASE 3e8h
LOG: Serial: port 3 will write to file C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt
LOG: Parallel1: BASE 378h
LOG: MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h
LOG: Memory I/O complexity optimization enabled aka option 'memory io optimization 1'. If the game or demo is unable to draw to the screen properly, set the option to false.
LOG: The 'scanline render on demand' option is available and may provide a modest boost in video render performance if set to true.
LOG: Allocated APM BIOS pm entry point at f000:ce40
LOG: Writing code to fce40
LOG: Writing code to fce60
LOG: Windows: IID_ITaskbarList3 is available
LOG: ISA Plug & Play BIOS enabled
LOG: VGA ROM BIOS init callback
LOG: pixratio 1.000, dw false, dh false
LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750
LOG: WARNING: No translation support (to host) for code page 0
LOG: DOS keyboard layout loaded with main language code US for layout us
LOG: XMS: 50 handles allocated for use by the DOS environment
LOG: EMS page frame at 0xe000-0xefff
LOG: COMMAND.COM env size: 720 bytes
LOG: COMMAND.COM environment block: 0x0701 sz=0x002d
LOG: COMMAND.COM main body (PSP): 0x072f sz=0x009a
LOG: COMMAND.COM stack: 0x0749
LOG: pixratio 1.350, dw false, dh false
LOG: Aspect ratio: 720 x 540 xToY=1.333 yToX=0.750
LOG: SHELL:Redirect output to COM3
VPX lights@f1: type6=0 typeE=0 decoded=0 dir=0 amb(0.00,0.00,0.00)
LOG: 184697104 ERROR MOUSE:Unhandled videomode 79 on reset
LOG: pixratio 1.000, dw false, dh false
LOG: Aspect ratio: 640 x 480 xToY=1.333 yToX=0.750
VPX lightnode t=6 nb=52: [8]00000000/0 [12]00000000/0 [16]00000001/1.4013e-45 [20]3f800000/1 [24]3f800000/1 [28]3f800000/1 [32]64078678/1e+22 [36]64078678/1e+22 [40]00000000/0 [44]bf6ae9ee/-0.917632 [48]ffffffff/nan
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:3 (IF0:3), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:1 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:2 (IF0:2), TX:0, Break 0
LOG: 601774926 ERROR INT10:PutPixel unhandled mode type 7
LOG: SHELL:Redirect output to RC.TXT
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:516 (IF0:6), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:522 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:506 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:513 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:511 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:510 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:510 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:514 (IF0:1), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:510 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:516 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:512 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:512 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:515 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:521 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:509 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:522 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:506 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:514 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:514 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:508 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:511 (IF0:0), TX:0, Break 0
LOG: Serial1: Errors: Framing 0, Parity 0, Overrun RX:331 (IF0:0), TX:0, Break 0
@@ -0,0 +1,82 @@
# pod_render_norio.conf -- pod_render_rec with the RIO serial port OFF.
#
# The emulator log shows a steady stream of serial1 RX OVERRUN errors on
# the RIO pipe, and controls post their events at HighEventPriority
# UNCONDITIONALLY (CONTROLS.HPP:250) -- so a chattering RIO port would
# flood a priority the background pump always serves first, starving the
# priority-0 renderer events the load gate waits on. This conf tests that
# by removing the port entirely. Everything else is identical to the rec
# conf, so a launch here and a hang there isolates the RIO.
#
[sdl]
output=opengl
# higher,higher not highest: HIGH_PRIORITY_CLASS starved the host desktop;
# with the retry patches a rare dropout self-recovers (see gauge_rio.conf).
priority=higher,higher
[dosbox]
memsize=32
machine=svga_s3
[cpu]
core=dynamic
cputype=pentium
cycles=max
[sblaster]
sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
[mixer]
# match the EMU8000s' native rate (no resample) and buffer ~60ms so brief
# emulation-thread stalls (RIO retry recovery) don't audibly chop
rate=44100
blocksize=1024
prebuffer=60
[serial]
# RIO on COM1 with the low-latency options (rxpollus/rxburst) so the board's
# few-ms ACK deadline is met; plasma display on COM2 (real pod has both).
# VWE fork namedpipe backend (com0com/realport retired -- COM1/COM2 gone):
# DOSBox = pipe client (retry), vRIO/vPLASMA apps = servers; an unconnected
# pipe behaves as an unplugged cable so the mission still runs. serialnamedpipe.h
serial1=disabled
serial2=namedpipe pipe:vplasma
# live UNBUFFERED game output: DOS char devices are not buffered, so
# redirecting stdout to COM3 lands every line immediately. A normal
# '> file' redirect stays 0 bytes until the process exits, which hides
# all progress on a run that does NOT crash.
serial3=file file:C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt
[autoexec]
mount c "C:\VWE\TeslaRel410\ALPHA_1"
c:
cd \REL410\BT
set VIDEOFORMAT=svga
rem production pod card init (PARAMETR.BAT:181-186): DIAGNOSE + AWEUTIL per
rem card -- AWEUTIL /S does the EMU8000 bring-up and DRAM detect the HMI SOS
rem driver relies on; skipping it left the cards uninitialized (silent).
rem aweutil /s SKIPPED for now: it verifies the AWE32 GM ROM, which the
rem emulated cards lack (hangs in a retry loop) -- restore once the ROM is
rem dumped from a real card. diagnose /s kept (passes, sets mixer config).
set BLASTER=A220 I5 D1 H5 P330 T6
c:\sb16\diagnose /s
set BLASTER=A240 I7 D3 H6 P300 T6
c:\sb16\diagnose /s
set BLASTER=A220 I5 D1 H5 P330 T6
set TEMP=c:\
rem arena1 city mission (TESTARN.EGG: map=arena1, time=day) with the RIO
rem attached; stdout redirected so mission-load progress survives kills.
set BT_MECH_LOG=1
set BT_LAUNCH_LOG=1
set BT_STACK_LOG=1
set BT_FORCE_THROTTLE=0.6
set BT_FORCE_TURN=0.25
set HEAPSIZE=15000000
set L4GAUGE=640x480x16
call setenv.bat r s n p
32rtm.exe -x
BTL4REC.EXE -egg testarn.egg > COM3
echo GAME-RC=%errorlevel% >> RC.TXT
32rtm.exe -u
echo ALPHA1-RUN-DONE
pause
+77 -70
View File
@@ -1,70 +1,77 @@
[sdl]
output=opengl
# higher,higher not highest: HIGH_PRIORITY_CLASS starved the host desktop;
# with the retry patches a rare dropout self-recovers (see gauge_rio.conf).
priority=higher,higher
[dosbox]
memsize=32
machine=svga_s3
[cpu]
core=dynamic
cputype=pentium
cycles=max
[sblaster]
sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
[mixer]
# match the EMU8000s' native rate (no resample) and buffer ~60ms so brief
# emulation-thread stalls (RIO retry recovery) don't audibly chop
rate=44100
blocksize=1024
prebuffer=60
[serial]
# RIO on COM1 with the low-latency options (rxpollus/rxburst) so the board's
# few-ms ACK deadline is met; plasma display on COM2 (real pod has both).
# VWE fork namedpipe backend (com0com/realport retired -- COM1/COM2 gone):
# DOSBox = pipe client (retry), vRIO/vPLASMA apps = servers; an unconnected
# pipe behaves as an unplugged cable so the mission still runs. serialnamedpipe.h
serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16
serial2=namedpipe pipe:vplasma
# live UNBUFFERED game output: DOS char devices are not buffered, so
# redirecting stdout to COM3 lands every line immediately. A normal
# '> file' redirect stays 0 bytes until the process exits, which hides
# all progress on a run that does NOT crash.
serial3=file file:C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt
[autoexec]
mount c "C:\VWE\TeslaRel410\ALPHA_1"
c:
cd \REL410\BT
set VIDEOFORMAT=svga
rem production pod card init (PARAMETR.BAT:181-186): DIAGNOSE + AWEUTIL per
rem card -- AWEUTIL /S does the EMU8000 bring-up and DRAM detect the HMI SOS
rem driver relies on; skipping it left the cards uninitialized (silent).
rem aweutil /s SKIPPED for now: it verifies the AWE32 GM ROM, which the
rem emulated cards lack (hangs in a retry loop) -- restore once the ROM is
rem dumped from a real card. diagnose /s kept (passes, sets mixer config).
set BLASTER=A220 I5 D1 H5 P330 T6
c:\sb16\diagnose /s
set BLASTER=A240 I7 D3 H6 P300 T6
c:\sb16\diagnose /s
set BLASTER=A220 I5 D1 H5 P330 T6
set TEMP=c:\
rem arena1 city mission (TESTARN.EGG: map=arena1, time=day) with the RIO
rem attached; stdout redirected so mission-load progress survives kills.
set BT_NO_SKL=1
set BT_FORCE_THROTTLE=0.6
set BT_FORCE_TURN=0.25
set HEAPSIZE=15000000
set L4GAUGE=640x480x16
call setenv.bat r s n p
32rtm.exe -x
BTL4REC.EXE -egg testarn.egg > COM3
[sdl]
output=opengl
# higher,higher not highest: HIGH_PRIORITY_CLASS starved the host desktop;
# with the retry patches a rare dropout self-recovers (see gauge_rio.conf).
priority=higher,higher
[dosbox]
memsize=32
machine=svga_s3
[cpu]
core=dynamic
cputype=pentium
cycles=max
[sblaster]
sbtype=sb16
sbbase=220
irq=5
dma=1
hdma=5
[mixer]
# match the EMU8000s' native rate (no resample) and buffer ~60ms so brief
# emulation-thread stalls (RIO retry recovery) don't audibly chop
rate=44100
blocksize=1024
prebuffer=60
[serial]
# RIO on COM1 with the low-latency options (rxpollus/rxburst) so the board's
# few-ms ACK deadline is met; plasma display on COM2 (real pod has both).
# VWE fork namedpipe backend (com0com/realport retired -- COM1/COM2 gone):
# DOSBox = pipe client (retry), vRIO/vPLASMA apps = servers; an unconnected
# pipe behaves as an unplugged cable so the mission still runs. serialnamedpipe.h
serial1=namedpipe pipe:vrio rxpollus:100 rxburst:16
serial2=namedpipe pipe:vplasma
# live UNBUFFERED game output: DOS char devices are not buffered, so
# redirecting stdout to COM3 lands every line immediately. A normal
# '> file' redirect stays 0 bytes until the process exits, which hides
# all progress on a run that does NOT crash.
serial3=file file:C:\VWE\TeslaRel410\emulator\render-bridge\podlog.txt
[autoexec]
mount c "C:\VWE\TeslaRel410\ALPHA_1"
c:
cd \REL410\BT
set VIDEOFORMAT=svga
rem production pod card init (PARAMETR.BAT:181-186): DIAGNOSE + AWEUTIL per
rem card -- AWEUTIL /S does the EMU8000 bring-up and DRAM detect the HMI SOS
rem driver relies on; skipping it left the cards uninitialized (silent).
rem aweutil /s SKIPPED for now: it verifies the AWE32 GM ROM, which the
rem emulated cards lack (hangs in a retry loop) -- restore once the ROM is
rem dumped from a real card. diagnose /s kept (passes, sets mixer config).
set BLASTER=A220 I5 D1 H5 P330 T6
c:\sb16\diagnose /s
set BLASTER=A240 I7 D3 H6 P300 T6
c:\sb16\diagnose /s
set BLASTER=A220 I5 D1 H5 P330 T6
set TEMP=c:\
rem arena1 city mission (TESTARN.EGG: map=arena1, time=day) with the RIO
rem attached; stdout redirected so mission-load progress survives kills.
set BT_NO_SKL=1
set BT_STACK_LOG=1
set BT_LAUNCH_LOG=1
set BT_FORCE_THROTTLE=0.6
set BT_FORCE_TURN=0.25
set HEAPSIZE=15000000
set L4GAUGE=640x480x16
call setenv.bat r s n p
32rtm.exe -x
BTL4REC.EXE -egg testarn.egg > COM3
echo GAME-RC=%errorlevel% >> RC.TXT
32rtm.exe -u
echo ALPHA1-RUN-DONE
pause
+62 -33
View File
@@ -41,39 +41,68 @@ 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
[launch] state=11 minPriorityEmpty=0 ticks=10820
[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1
[launch] state=11 minPriorityEmpty=0 ticks=11832
[queues] p0=BUSY p1=BUSY p2=BUSY p3=BUSY p4=- nextReady=1
[launch] state=11 minPriorityEmpty=0 ticks=12842
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=11 minPriorityEmpty=0 ticks=13851
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=11 minPriorityEmpty=0 ticks=14860
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=15958
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=17008
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=18070
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=19132
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=20193
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=21253
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=22362
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=23473
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[stack] frame at 0x12dee7 drift=0 over 1001 frames ticks=24504 pump=352/1499
[launch] state=2 minPriorityEmpty=0 ticks=24583
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=25692
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=26803
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=27912
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=29021
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=30132
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=31241
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=32350
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=33461
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=34572
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=35681
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
LBE4ControlsManager::Execute, lost RIO analog request
iThinkIRQIsOn =1, actual state =1, characters sent =5012
[launch] state=2 minPriorityEmpty=0 ticks=36694
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=37738
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=38800
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[launch] state=2 minPriorityEmpty=0 ticks=39861
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
[stack] frame at 0x12dee7 drift=0 over 2002 frames ticks=40606 pump=495/2643
[launch] state=2 minPriorityEmpty=0 ticks=40922
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
Reference to a page you don't own
PF cr2= 7000 FA64 at 00FF 0000 66D9
Unhandled exception 000E at 00FF 66D9 ErrCode 0004
+7 -1
View File
@@ -46,6 +46,7 @@ if [ -s "$BR/podlog.txt" ]; then
else
echo "archived previous run -> $(basename "$PREV")"
fi
[ -s "$BR/dosboxlog.txt" ] && cp "$BR/dosboxlog.txt" "$BR/logs/$(printf '%03d' "$N")-dosbox.txt"
fi
if tasklist //FI "IMAGENAME eq dosbox-x.exe" 2>/dev/null | grep -qi dosbox-x; then
@@ -84,6 +85,11 @@ export RIO_TAP="$WORK/riotap.txt"
rm -f "$BR/podlog.txt"
cd /c/VWE/TeslaRel410/emulator/src/src
./dosbox-x.exe -conf "$BR/$CONF.conf" > /dev/null 2>&1 &
#
# Keep the emulator's own stdout/stderr. The game's stdout comes back over
# COM3, but the DPMI host's exception report and any device-side complaint go
# to the emulator, and those were being thrown away.
#
./dosbox-x.exe -conf "$BR/$CONF.conf" > "$BR/dosboxlog.txt" 2>&1 &
echo "launched $CONF (tag=$TAG) -- pid $!"
echo "watch: tail -f $BR/podlog.txt"
File diff suppressed because it is too large Load Diff
+28
View File
@@ -575,6 +575,17 @@ inline void
)
{
Check(this);
if (priority == MinEventPriority && message != NULL)
{
Check(message);
if (
(int)message->messageID >= 0 &&
(int)message->messageID < POST_TALLY_IDS
)
{
postTally[(int)message->messageID]++;
}
}
eventQueue->Post(priority,target,message,when);
}
@@ -677,6 +688,23 @@ extern long
extern long
eventPumpHits;
//
// POST TALLY, by message ID, for priority 0 only.
//
// Measured: priority 0 is never empty, nothing above it is busy, and
// PeekAtNextEvent always reports a ready event while the pump drains ~143 per
// simulated second. That is a REFILL loop -- something re-posts priority-0
// work as fast as it is consumed -- and the counters are identical to the byte
// across runs, so it is deterministic rather than a race.
//
// Only the interest manager posts at priority 0 (it maps every renderer event
// there while the application is not RunningMission), so naming the message
// names the flooder.
//
#define POST_TALLY_IDS 64
extern long
postTally[POST_TALLY_IDS];
inline Logical
Application::ProcessOneEvent(int min_priority)
{
@@ -908,3 +908,105 @@ BTL4REC.EXE, exports the host-side VPX board env (without which the run dies at
the iserver handshake, not merely unrendered), and archives each run's log --
marking the file -CRASH when it faulted. The only preserved dump before this
was an accident, on a rig where every run costs four minutes.
--------------------------------------------------------------------------------
THE LOAD GATE: WHAT THE EVENT-PUMP COUNTERS SHOWED
--------------------------------------------------------------------------------
Two runs of the instrumented build, both ending in the same fault:
[stack] ... over 1001 frames ticks=24729 pump=352/1499
[stack] ... over 2002 frames ticks=41586 pump=495/2643
[launch] state=2 minPriorityEmpty=0 ... (31 reposts, then the fault)
Reading those numbers rules out most of what "the queue never drains" could
mean:
* The pump RUNS. 1144 ProcessOneEvent calls over 1001 frames is 1.14 per
frame -- one from the HighEventPriority check at the top of
ExecuteBackgroundTask, plus one every seventh frame from
BackgroundTasks::Execute, which round-robins ONE task per call across our
seven tasks. That 1-in-7 is exactly the rotation, so the early-return path
is NOT starving the background list.
* The pump FINDS WORK. 143 hits per 1001 frames is ~1 per 7 -- essentially
every ProcessEventTask call succeeds, while the HighEventPriority calls
find nothing. So events are being processed continuously, at about 8 per
real second, and priority 0 still never empties after 30+ seconds.
* events=0 in the trace is a red herring: ++eventCount lives inside
#if defined(TRACE_EVENT_COUNT), which this build does not define, so
GetEventCount() reads 0 no matter what is queued. The probe now prints
per-priority occupancy instead, which needs no counter.
That leaves two candidates, and they want opposite fixes:
1. VOLUME. There really are hundreds of priority-0 renderer events and we
drain them at 8/sec, so the load simply has not finished when the fault
arrives. Our MakeEntityRenderables loads 19 .bgf objects per mech through
the EMULATED board, which is not a cheap operation.
2. DEADLOCK. Priority 0's head is a TIMED event whose alarm never comes due.
PeekAtNextEvent only returns a timed event when alarmTime <= Now(), but
IsPriorityEmpty counts it regardless -- so such an event is invisible to
the pump and permanently visible to the gate.
The [queues] probe prints every priority's occupancy each second, which
separates them: only p0 busy means the deadlock, higher priorities busy means
we are just watching a long load.
RULED OUT ALONG THE WAY. The queue is allocated correctly
(GeneralEventQueue::Make does new GeneralEventQueue[5], EVENT_PRIORITIES_COUNT
is 5, MaxEventPriority is 4, so this[priority] indexing is in range).
Application::Post passes its priority through untouched. The renderer's
NotifyOfNewInterestingEntity handler consumes its message without re-posting,
so there is no refill loop from that path.
A SEPARATE THREAD WORTH PULLING. The emulator log -- newly captured by
podrun.sh -- shows a steady trickle of serial1 RX OVERRUN errors on the RIO
named pipe, and ControlsInstanceEventOf<T> posts at HighEventPriority
UNCONDITIONALLY (CONTROLS.HPP:250), with no application-state guard. Our log
also carries "RIO never came back from test mode!" where the shipped binary
does not. pod_render_norio.conf disables serial1 and changes nothing else, so
a launch there against a hang here isolates the RIO in one run.
--------------------------------------------------------------------------------
IT IS A REFILL LOOP, AND IT IS DETERMINISTIC
--------------------------------------------------------------------------------
Per-priority occupancy, steady state, every second until the fault:
[queues] p0=BUSY p1=- p2=BUSY p3=- p4=- nextReady=1
* p3 and p4 EMPTY kills the starvation theory outright. Nothing above
priority 0 is competing, so the pump is free to serve it.
* p2 busy is this handler's own once-a-second repost. Expected.
* nextReady=1 means PeekAtNextEvent always has a READY event to hand out --
so priority 0 is not holding a timed event that never comes due either.
That kills the deadlock theory.
What is left is the only remaining shape: priority 0 is being REFILLED as fast
as the pump drains it, at ~143 events per simulated second.
And it is deterministic. Two runs of the same binary reported pump=352/1499 at
frame 1001 and 495/2643 at frame 2002 -- identical to the byte. So this was
never a race, and "crashes about half the time" was always an artifact of
comparing runs that differed in binary or conf, not in luck.
Only InterestManager::PostRendererEvent posts at priority 0 -- it maps every
renderer event there while the application is not RunningMission -- so naming
the message names the flooder. Application::Post now tallies priority-0 posts
by message ID and the [posts] line reports the busiest three. The IDs to
expect, from RENDERER.HPP against Receiver::NextMessageID = 3:
3 NotifyOfNewInterestingEntity 6 StopAllEntityEffects
4 NotifyOfBecomingUninteresting 7 StartEntityAlarm
5 StartEntityEffect 8 StopEntityAlarm
3 and 4 climbing together would mean entities are oscillating in and out of the
interest set; 3 alone means something re-adds them; 5 or 7 would point at
effects or alarms instead.
The controlled A/B to run alongside it: pod_render_noskl.conf now carries the
same probes, so the SAME instrumented binary can be run with the skeleton walk
on and off. Earlier walk-off runs reached "Turning Plasma Score Display On",
which is the only configuration of ours known to launch -- if walk-off also
stops the refill, the walk is implicated in the hang even though it is NOT the
cause of the fault signature (which predates it).