Environment
- Device: Snapdragon 8 Gen 2 (Android)
- Stack:
box64 + Wine x86_64 (Winlator-based environment)
- Wine baseline: Proton 9.0 codebase, with local integration/debug patches
- box64: local debug build with extra instrumentation for FillBlock + INT paths
Summary
This was debugged in two stages:
- Stage A (fixed): dynarec FillBlock storm
- Stage B (current blocker):
INT 0x2c -> c0000420 unhandled
Stage A: FillBlock storm (pre-fix)
Before the current assertion failure, runs repeatedly hit FillBlock segfault/cancel loops.
From /tmp/winlator_cmod/wfm_2026-02-24_20-24-56.txt:
[BOX64] FillBlock triggered a segfault at 0x2 from 0x6237543b08
[BOX64] FillBlock at 0x6edec400 triggered a segfault, canceling
[BOX64] FillBlock triggered a segfault at 0x2 from 0x6237543b08
[BOX64] FillBlock at 0x6edec400 triggered a segfault, canceling
[BOX64] FillBlock triggered a segfault at 0x2 from 0x6237543b08
[BOX64] FillBlock at 0x6edec409 triggered a segfault, canceling
[BOX64] FillBlock triggered a segfault at 0x2 from 0x6237543b08
[BOX64] FillBlock at 0x6edec40f triggered a segfault, canceling
After fixing this path (safe diagnostics + robust fault-path handling), startup proceeds further and no longer dies at this stage.
Stage B: Current blocker (INT 0x2c -> c0000420)
WoW loader attach completes
01b4:err:module:process_attach [LDRDBG] process_attach initdll leave tid=01b4 dll=L"WowClassic_loader.dll" status=00000000
01b4:err:module:process_attach [LDRDBG] process_attach end tid=01b4 dll=L"WowClassic_loader.dll" status=00000000
box64 emits INT 0x2c
[BOX64] [BOX64_INTDBG] EmitInterruption num=0x2c rip=0x7fff623ea0 rsp=0x7dafd18 rbp=0x7dafd50 cs=0x33 ss=0x2b si_code=44 si_errno=0xdead addr=0x7fff623ea0
[BOX64] [BOX64_INTDBG] signal-map int=0x2c trapno=13 err=0x162 skip=3 rip=0x7fff623ea0 rsp=0x7dafd18 rbp=0x7dafd50 si_code=44
Wine sees assertion failure and does not recover
01c4:err:seh:dispatch_exception [LDRDBG] dispatch_exception enter tid=01c4 code=c0000420 flags=00000000 addr=0000007FFF623EA0 rip=7fff623ea0 rsp=7dafd18 rbp=7dafd50
01c4:err:seh:dispatch_exception unknown exception (code=c0000420) raised
Current understanding
WowClassic_loader.dll attach completes successfully.
- Fatal path is later:
INT 0x2c -> STATUS_ASSERTION_FAILURE.
- This is no longer the old FillBlock crash.
- Likely compatibility/semantics issue in assertion delivery/handling under
box64 + Wine.
Questions
- Is current box64
INT 0x2c mapping/delivery (trapno=13, err=0x162) correct for Wine x86_64 expectation?
- Is this a known compatibility gap for WoW/Blizzard binaries on this stack?
- Any recommended box64-side handling tweak for this specific assertion path?
Environment
box64 + Wine x86_64(Winlator-based environment)Summary
This was debugged in two stages:
INT 0x2c -> c0000420unhandledStage A: FillBlock storm (pre-fix)
Before the current assertion failure, runs repeatedly hit FillBlock segfault/cancel loops.
From
/tmp/winlator_cmod/wfm_2026-02-24_20-24-56.txt:After fixing this path (safe diagnostics + robust fault-path handling), startup proceeds further and no longer dies at this stage.
Stage B: Current blocker (
INT 0x2c -> c0000420)WoW loader attach completes
box64 emits INT 0x2c
Wine sees assertion failure and does not recover
Current understanding
WowClassic_loader.dllattach completes successfully.INT 0x2c -> STATUS_ASSERTION_FAILURE.box64 + Wine.Questions
INT 0x2cmapping/delivery (trapno=13,err=0x162) correct for Wine x86_64 expectation?