OS Name/Version: Windows 11 25H2 (build 26200.9711), Docker Desktop 4.73.1 (226574), Engine 29.4.3, WSL2 backend (kernel 6.6.114.1-microsoft-standard-WSL2)
Product Name/Version: AMP ‘Proteus’ v2.8.0.8 (Mainline), Enshrouded template config version 11, GE-Proton11-9
Problem Description:
Since Enshrouded 1.0, a new Enshrouded instance running in a Docker container (cubecoders/ampbase:debian) on a Windows host installs successfully, but the application never starts. The datastore is D:\AMPDatastore (NTFS), bind-mounted into the container as /AMP.
This task could not be completed: Starting Enshrouded... - State: 3.
Application stopped unexpectedly with exit code 5.
SteamCMD installs app 2278520. It hit the “Missing configuration” first-run bug, and AMP’s automatic retry succeeded. GE-Proton11-9 downloads. The instance console then shows only this, twice, before AMP stops retrying:
fsync: up and running.
[System Warning] : The application stopped unexpectedly. Exit code 5
[System Warning] : Application failed to start 2 times, not restarting.
No logs folder is created in the server directory, so enshrouded_server.exe never gets far enough to write its own log.
Manual launch inside the container as the amp user (uid 1001), using the template’s environment plus SteamGameId=1203620 and PROTON_LOG=1:
- Default: the exe loads at a randomized address and crashes in ntdll during load. The faulting address equals the load address minus
0x140000000, which points at the exe relocation step.
Loaded L"Z:\\AMP\\enshrouded\\2278520\\enshrouded_server.exe" at 00006FFFFC2C0000: native
code=c0000005 (EXCEPTION_ACCESS_VIOLATION) flags=0 addr=00006FFFFFF3FB8B
info[0]=0000000000000001
info[1]=00006FFEBC2C0000
backtrace: 00006FFFFFF3FB8B: L"ntdll.dll" + 000000000004FB8B.
- With
WINE_DISABLE_EXE_ASLR=1: the exe loads at its preferred base, then crashes on its first instruction. The memory at the entry point contains zeros.
Loaded L"Z:\\AMP\\enshrouded\\2278520\\enshrouded_server.exe" at 0000000140000000: native
Unhandled exception: page fault on write access to 0x0000000000000000 in 64-bit code (0x00000140b458f8).
=>0 0x00000140b458f8 in enshrouded_server (+0xb458f8) (0000000000000000)
0x00000140b458f8 EntryPoint in enshrouded_server: addb %al, (%rax)
The file itself is intact. Reading the entry point from enshrouded_server.exe inside the container with both read() and mmap() returns valid code:
entry rva 0xb458f8
section b'.text' file offset 0xb44cf8
read bytes 4883ec28e8e30600004883c428e9e2fd
mmap bytes 4883ec28e8e30600004883c428e9e2fd
The .text section’s file offset and virtual address differ by 0xC00, which isn’t page-aligned, so Wine has to copy that section into memory rather than map it directly. In the Wine process the result is zeros. This may be specific to the Docker Desktop NTFS bind mount.
Separately: since 1.0, community Enshrouded container images report needing Proton 11 plus SteamGameId/SteamAppId=2278520, UMU_USE_STEAM=1, libvulkan1 and a virtual display to get past Steamworks init (“Version Mismatch / No SteamUtils011”). The current template sets only SteamAppId=1203620, so it may need updating for 1.0 independent of this crash.
Steps to reproduce:
- Windows 11 host with Docker Desktop (WSL2 backend), AMP 2.8.0.8, “Create in Docker Containers” enabled, datastore on an NTFS drive
- Create an Enshrouded instance with “Proton GE Release Version (Linux)” left empty (installs GE-Proton11-9)
- Update the instance, then Start
- The application exits with code 5 twice and AMP stops retrying
Actions taken to resolve so far:
- Deleted and recreated the instance
- Checked the ADS log and the instance log (no error beyond exit code 5)
- Confirmed ownership: AMP runs as
amp(uid 1001), and/AMP/enshrouded/.proton/compatdata/pfxis owned byamp:amp - Ran the server manually via
docker exec -u 1001with the template’s environment andPROTON_LOG=1; exit code 5 is reproduced (log excerpts above) - Tested
WINE_DISABLE_EXE_ASLR=1; the relocation crash is gone, but it crashes at the entry point instead - Verified the exe’s entry-point bytes on disk with
read()andmmap()inside the container; the file is intact
Full instance log, ADS01 log and both steam-1203620.log runs are available on request.