Skip to content

Help with error SIGSEGV in AMXX (amxmodx_mm_i386.so) MemoryUtils::ResolveSymbol under Box32 on ARM64 #4281

Description

@HaDan97

Environment

  • Box64 version: v0.4.3 f79babc (Dynarec)
  • Hardware: Oracle Cloud Ampere A1 (ARM64), Neoverse-N1, 2 cores
  • OS: Ubuntu (inside Docker container ghcr.io/pelican-eggs/yolks:box64)
  • Application: Half-Life Dedicated Server (HLDS) running Counter-Strike 1.6, with Metamod-r 1.3.0.149 and AMX Mod X loaded via Box32

Description

The server crashes with SIGSEGV consistently, always inside amxmodx_mm_i386.so, in MemoryUtils::ResolveSymbol, right after AMX Mod X initializes and before any plugin loads. The crash happens whether AMX Mod X is loaded via Metamod's plugin.ini or manually. Metamod-r and other plugins (Reunion) initialize fine; only AMX Mod X triggers the crash.

Tested with two different AMX Mod X versions (1.10.0.5467 and 1.9.0.5303, both official builds) — same crash, same function, same relative offset (ResolveSymbol + 0xe4), suggesting it's not version-specific but a Box32/Box64 emulation issue with whatever memory-scanning technique AMX Mod X uses to resolve engine symbols.

Steps to reproduce

  1. Run HLDS (hlds_linux, x86 32-bit binary) under Box64 with Box32 enabled, via: box64 ./hlds_linux -game cstrike -ip 0.0.0.0 -port 27015 +clientport 27005 +tv_port 27020 +map de_dust2 -maxplayers 20 -tickrate 100 -pingboost 2 +sys_ticrate 1000 +fps_max 1000

  2. Ensure Metamod-r and AMX Mod X are both installed and enabled in addons/metamod/dlls/plugins.ini (or equivalent).

  3. Server crashes with SIGSEGV during AMX Mod X initialization, before the first plugin loads.

What I've already tried (no effect, same crash)

  • BOX64_DYNAREC_SAFEFLAGS=1
  • BOX64_DYNAREC_BIGBLOCK=0
  • BOX32_DYNAREC_SAFEFLAGS=1
  • BOX64_DYNAREC_STRONGMEM=1
  • Swapping AMX Mod X from 1.10.0.5467 to 1.9.0.5303 (official GitHub release) — identical crash

Crash log

[BOX32] Using emulated /home/container/cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so
AMX Mod X version 1.9.0.5303 Copyright (c) 2004-2015 AMX Mod X Development Team
AMX Mod X comes with ABSOLUTELY NO WARRANTY; for details type `amxx gpl'.
This is free software and you are welcome to redistribute it under
certain conditions; type 'amxx gpl' for details.

[BOX32] Using emulated cstrike/addons/amxmodx/modules/fun_amxx_i386.so
[BOX32] Using emulated cstrike/addons/amxmodx/modules/engine_amxx_i386.so
[BOX32] Using emulated cstrike/addons/amxmodx/modules/fakemeta_amxx_i386.so
[BOX32] 0014|SIGSEGV @0x1075be7bc (???(0x1075be7bc)) (x64pc=0x43a4c974/"/home/container/cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so/_ZN11MemoryUtils13ResolveSymbolEPvPKc + 0xe4", rsp=0x3081a880, stack=0x30020000:0x30820000 own=(nil) fp=0x43bd6711), for accessing 0x4 (code=1/prot=0), db=0x1075bea48(0x1075be6c0:0x1075beb5c/0x43a4c8f7:0x43a4c9c0//home/container/cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so/_ZN11MemoryUtils13ResolveSymbolEPvPKc + 0x67:clean, hash:a739055b/a739055b) handler=(nil)
RAX:0x0000000000000004 RCX:0x0000000000000000 RDX:0x000000003081aa2c RBX:0x000000005eb9e440
RSP:0x000000003081a880 RBP:0x0000000043bd6711 RSI:0x000000005eb95030 RDI:0x0000000043bd6494
R8:0x0000000000000000 R9:0x0000000000000000 R10:0x0000000000000000 R11:0x0000000000000000
R12:0x0000000000000000 R13:0x0000000000000000 R14:0x0000000000000000 R15:0x0000000000000000
ES:0x002b CS:0x0023 SS:0x002b DS:0x002b FS:0x0000 GS:0x0033 FSBASE=(nil) GSBASE=0x5e7b8e40
RSP-0x20:0x3035333100000020 RSP-0x18:0x43a4c95600000000 RSP-0x10:0x00000000fcaa9010 RSP-0x08:0xffffffff00040000
RSP+0x00:0x0000000000000020 RSP+0x08:0xffffffff00000006 RSP+0x10:0x0000000000000003 RSP+0x18:0x0000000800000000 x86opcode=8B 00 89 46 10 C7 46 14 (opcode=b940014a)
./hlds_run: line 6: 14 Segmentation fault (core dumped) box64 ./hlds_linux -game cstrike -ip 0.0.0.0 -port 27015 +clientport 27005 +tv_port 27020 +map de_dust2 -maxplayers 20 -tickrate 100 -pingboost 2 +sys_ticrate 1000 +fps_max 1000

Additional notes

The engine, Metamod-r, and Reunion all initialize and run correctly under this same Box32/Box64 stack — only AMX Mod X triggers this crash, consistently, at the exact same point across two different AMXX versions. This suggests AMX Mod X's engine-symbol resolution (which appears to do low-level memory pattern scanning) is hitting a Box32 emulation edge case. Happy to provide more logs, test patches, or run additional diagnostics if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions