Files
Sylpheed/docs/re/data/a-press-fault-log-extract.txt
sylph-decoder 89d51449e7 re: the A-press fault is SOLVED -- Xenia swallows input, the guest pump is unbounded
The 326 MB log from the failing run was still on disk, so this needed no
emulator time at all.

Mechanism: Xenia's XamInputGetKeystrokeEx returns X_ERROR_SUCCESS with a zeroed
keystroke on every call while a XAM dialog is up (xam_input.cc:197, upstream
Canary). The game's keystroke pump -- sub_82457038, read out of the image -- is
an unbounded 'while (GetKeystrokeEx() == SUCCESS) queue.push_back()'. It queued
8 388 608 empty keystrokes, grew its vector to 64 MB, asked for 128 MB, got a
failed allocation back unchecked, and copied off the top of the guest stack.

Two independent instruments agree to within 7: the Canary counter's last report
before the crash says 8 388 601 swallowed calls; the crash dump's r29 says the
vector held 8 388 608. The reporting granularity is 600.

Retracts this page's own 'r9 is a wild pointer above 4 GB'. Xenia prints
si_addr, a host address; the guest is mapped at 0x100000000, so the fault
address is guest 0x701D0000 -- which is exactly r9 in the register dump.

Also refutes nothing of the port's, but answers its ask #3: the two press-a
captures are different frames (40.84 % of the band's pixels differ at the
best alignment, which has a sharp minimum), so its 0.301 % is not an
instrument floor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wuu56cE8vJGTBtn1ppsk8v
2026-08-30 06:44:49 +00:00

139 lines
8.7 KiB
Plaintext

# Extract from the Ⓐ-press fault run's xenia.log (2026-08-29)
#
# Source: /sylph-home/re/canary-build/bin/Linux/Release/xenia.log, 326 921 343 bytes,
# mtime 2026-08-29 22:15. 32 356 '==== CRASH DUMP ====' blocks. This file is the
# part that carries the diagnosis; the whole log is not committed (326 MB).
#
# ---- 1. the three real Ⓐ keystrokes, then the swallow begins (log lines 1180-1262)
i> 0100000C [UI-CAP] writing xenia_re_ui_draws_01.log (from frame 0)
!> 0001278F MEM-WATCH rss=590MB (peak 590MB) vsz=19185MB malloc_inuse=313MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=590MB (peak 590MB) vsz=19189MB malloc_inuse=313MB mmap=90MB cache_deque=40 cache_list=40
i> F8000008 [file-pad] #3 buttons=1000 lt=0 rt=0 lx=0 ly=0 rx=0 ry=0
i> F8000008 [file-pad] keystroke vk=5800 down
i> F8000008 [RE-INPUT] XamInputGetKeystrokeEx -> user=0 vk=5800 flags=0001 (call flags 00000003)
i> F8000008 [file-pad] #4 buttons=0000 lt=0 rt=0 lx=0 ly=0 rx=0 ry=0
i> F8000008 [file-pad] keystroke vk=5800 up
i> F8000008 [RE-INPUT] XamInputGetKeystrokeEx -> user=0 vk=5800 flags=0002 (call flags 00000003)
!> 0001278F MEM-WATCH rss=594MB (peak 594MB) vsz=19189MB malloc_inuse=314MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=595MB (peak 595MB) vsz=19189MB malloc_inuse=313MB mmap=90MB cache_deque=40 cache_list=40
i> F8000008 XThreadF80000B8 (1A) Stack: 70880000-70900000
K> F80000B8 XThread::Execute thid 26 (handle=F80000B8, 'XThread76FFE6C0 (F80000B8)', native=76FFE6C0)
F> F80000B8 HostPathDevice::ResolvePath(\aab216c3\5\c10eae6)
F> F80000B8 HostPathDevice::ResolvePath(\aab216c3\5)
F> F8000084 DiscImageDevice::ResolvePath(\dat)
F> F8000008 DiscImageDevice::ResolvePath(\dat\movie)
F> F8000008 DiscImageDevice::ResolvePath(\dat\movie)
i> F8000008 XThreadF8000154 (1B) Stack: 70880000-70890000
i> F8000008 XThreadF8000158 (1C) Stack: 708B0000-708C0000
i> F8000008 XThreadF800015C (1D) Stack: 708E0000-708F0000
i> F8000008 XThreadF8000160 (1E) Stack: 70910000-70920000
K> F8000158 XThread::Execute thid 28 (handle=F8000158, 'XThread6FFFF6C0 (F8000158)', native=6FFFF6C0)
K> F8000154 XThread::Execute thid 27 (handle=F8000154, 'XThread75FFD6C0 (F8000154)', native=75FFD6C0)
K> F800015C XThread::Execute thid 29 (handle=F800015C, 'XThread6EFFE6C0 (F800015C)', native=6EFFE6C0)
!> 0001278F MEM-WATCH rss=660MB (peak 660MB) vsz=19473MB malloc_inuse=324MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=661MB (peak 661MB) vsz=19473MB malloc_inuse=324MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=661MB (peak 661MB) vsz=19473MB malloc_inuse=324MB mmap=90MB cache_deque=40 cache_list=40
i> F8000008 [file-pad] #5 buttons=1000 lt=0 rt=0 lx=0 ly=0 rx=0 ry=0
i> F8000008 [file-pad] keystroke vk=5800 down
i> F8000008 [RE-INPUT] XamInputGetKeystrokeEx -> user=0 vk=5800 flags=0001 (call flags 00000003)
i> F8000008 [file-pad] #6 buttons=0000 lt=0 rt=0 lx=0 ly=0 rx=0 ry=0
i> F8000008 [file-pad] keystroke vk=5800 up
i> F8000008 [RE-INPUT] XamInputGetKeystrokeEx -> user=0 vk=5800 flags=0002 (call flags 00000003)
w> F8000008 XThread::Resume: host resume was refused for thread F8000154
w> F8000008 XThread::Resume: host resume was refused for thread F8000158
w> F8000008 XThread::Resume: host resume was refused for thread F800015C
K> F8000160 XThread::Execute thid 30 (handle=F8000160, 'XThread6DFFD6C0 (F8000160)', native=6DFFD6C0)
w> F8000008 XThread::Resume: host resume was refused for thread F8000154
w> F8000008 XThread::Resume: host resume was refused for thread F8000158
w> F8000008 XThread::Resume: host resume was refused for thread F800015C
w> F8000008 XThread::Resume: host resume was refused for thread F8000160
w> F8000008 XThread::Resume: host resume was refused for thread F8000160
w> F8000008 XThread::Resume: host resume was refused for thread F8000160
w> F8000008 XThread::Resume: host resume was refused for thread F8000160
w> F8000008 XThread::Resume: host resume was refused for thread F8000160
w> F8000008 XThread::Resume: host resume was refused for thread F8000160
!> F8000008 BaseHeap::Release failed because address is not a region start: addr=1E4B0E00 heap_base=00000000 page=124080 owning_region_start=1C220000 region_page_count=14976 state=03
!> F8000008 PhysicalHeap::Release failed due to parent heap failure
!> F8000008 BaseHeap::Release failed because address is not a region start: addr=1E7A8F00 heap_base=00000000 page=124840 owning_region_start=1C220000 region_page_count=14976 state=03
!> F8000008 PhysicalHeap::Release failed due to parent heap failure
F> F8000084 DiscImageDevice::ResolvePath(\dat)
!> 0001278F MEM-WATCH rss=830MB (peak 830MB) vsz=19501MB malloc_inuse=349MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=831MB (peak 831MB) vsz=19501MB malloc_inuse=349MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=831MB (peak 831MB) vsz=19501MB malloc_inuse=349MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=831MB (peak 831MB) vsz=19501MB malloc_inuse=349MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=831MB (peak 831MB) vsz=19501MB malloc_inuse=349MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=832MB (peak 832MB) vsz=19501MB malloc_inuse=348MB mmap=90MB cache_deque=40 cache_list=40
!> 0001278F MEM-WATCH rss=832MB (peak 832MB) vsz=19501MB malloc_inuse=348MB mmap=90MB cache_deque=40 cache_list=40
i> F8000008 [file-pad] #7 buttons=1000 lt=0 rt=0 lx=0 ly=0 rx=0 ry=0
i> F8000008 [file-pad] keystroke vk=5800 down
i> F8000008 [RE-INPUT] XamInputGetKeystrokeEx -> user=0 vk=5800 flags=0001 (call flags 00000003)
i> F8000008 XThreadF80000D4 (1F) Stack: 70880000-70900000
K> F80000D4 XThread::Execute thid 31 (handle=F80000D4, 'XThread9BFFF6C0 (F80000D4)', native=9BFFF6C0)
F> F80000D4 HostPathDevice::ResolvePath(\aab216c3\a\c7e701e)
F> F80000D4 HostPathDevice::ResolvePath(\aab216c3\a)
F> F80000D4 HostPathDevice::ResolvePath(\d5faa9db\e\b80b1a0)
F> F80000D4 HostPathDevice::ResolvePath(\d5faa9db\e)
F> F80000D4 HostPathDevice::ResolvePath(\d5faa9db\c\6dea48b)
F> F80000D4 HostPathDevice::ResolvePath(\d5faa9db\c)
i> F8000008 [file-pad] #8 buttons=0000 lt=0 rt=0 lx=0 ly=0 rx=0 ry=0
i> F8000008 [file-pad] keystroke vk=5800 up
i> F8000008 [RE-INPUT] XamInputGetKeystrokeEx -> user=0 vk=5800 flags=0002 (call flags 00000003)
!> 0001278F MEM-WATCH rss=833MB (peak 833MB) vsz=19501MB malloc_inuse=349MB mmap=90MB cache_deque=40 cache_list=41
w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 1 so far)
!> F8000008 BaseHeap::Release failed because address is not a region start: addr=1DA98C80 heap_base=00000000 page=121496 owning_region_start=1C220000 region_page_count=14976 state=03
!> F8000008 PhysicalHeap::Release failed due to parent heap failure
w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 601 so far)
w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 1201 so far)
w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 1801 so far)
w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 2401 so far)
w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 3001 so far)
w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 3601 so far)
# ---- 2. the last swallow report before the first crash dump (log line <15243)
15236:w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 8388001 so far)
15237:w> F8000008 [RE-INPUT] XamInputGetKeystrokeEx swallowed by IsUIActive (ui_active=true, 8388601 so far)
# total 'swallowed' report lines before the first crash dump:
13982
# they are emitted every 600th call, so swallowed calls ~= 600 x that count
# ---- 3. the first crash dump's GPRs (log line 15243+)
!> F8000008 ==== CRASH DUMP ====
Thread ID (Host: 0xEEFFE6C0 / Guest: 0x00000006)
Thread Handle: 0xF8000008
PC: 0x824578A0
Access Violation: write at 0x00000001701D0000
Registers:
r0 = 0000000000000000
r1 = 00000000701CF7B0
r2 = 0000000020000000
r3 = 00000000701CF5F0
r4 = 0000000000000000
r5 = 0000000000000000
r6 = 0000000000000000
r7 = 00000000A3AC0000
r8 = 00000000701D0008
r9 = 00000000701D0000
r10 = 0000000000000000
r11 = 00000000A3AC0A18
r12 = 0000000082457864
r13 = 000000003001E000
r14 = 0000000000000000
r15 = 0000000000000000
r16 = 0000000000000000
r17 = 0000000000000000
r18 = 00000000BCE24BFC
r19 = 0000000000000001
r20 = 0000000000000000
r21 = FFFFFFFFFFFFFFFF
r22 = 00000000BC65D540
r23 = FFFFFFFF828F3844
r24 = 000000000000052F
r25 = FFFFFFFF828E0000
r26 = 0000000000800001
r27 = 0000000001000000
r28 = 00000000701CF898
r29 = 0000000000800000
r30 = FFFFFFFF828F38CC
r31 = 00000000A7AC0000