Skip to content

SIGSEGV inside my32___vsnprintf / RELR relocations unsupported #4020

Description

@shakeheartbreak

Two Box32 issues found while running a 32-bit x86 GL app under box64 v0.4.3 + Box32 on aarch64 (Debian, glibc 2.41).

  1. SIGSEGV inside my32___vsnprintf

[BOX32] SIGSEGV @0x... (__vsnprintf) (x64pc=.../"box64/__vsnprintf + 0x13") for accessing 0x100 (code=1/prot=0)

Native BT:
box64(my32___vsnprintf+0x60) /lib/aarch64-linux-gnu/libc.so.6(__vsnprintf+0x78) <- faults

The emulated backtrace below this is garbage (??? [0x3080eca040039f6d]), which looks like a corrupted va_list rather than a wild pointer in the guest. Reproducible on every run. The faulting address shifts (0x100, 0x210) with different guest inputs, always a small offset from null.

  1. RELR relocations unsupported

BOX64_EMULATED_LIBS=libc.so.6 aborts before main:

[BOX32] Error: RELR type of Relocation unsupported (only REL)
[BOX32] Error: relocating symbols in elf libc.so.6

Debian's libc6:i386 uses RELR packed relocations, so emulating libc isn't possible on current Debian. This blocks the obvious workaround for (1).

Happy to run any diagnostic build or env var combination you'd like.

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