[Bug] FXServer (GTA V Enhanced, early-access b90) hangs on startup inside Docker #50
Replies: 8 comments 8 replies
|
Can you please run it with the two following env vars and post the entire terminal output here? |
|
If tabarras fix does not work. Try to add this in docker compose service:. This was my fix who worked for me |
|
Reproduced this on bare metal (no Docker at all), and also just tested inside a container both with and without seccomp:unconfined — same hang in all four cases. Full details below, including a strace trace down to the exact syscall it's stuck in. Environment (bare metal) Rocky Linux 10.2, kernel 6.12.0-211.16.1.el10_2.0.1.x86_64 Stops dead after [tx:ConfigStore] Empty configuration file. — no further output, port 40120 never binds, ~0% CPU. Note: the exact freeze point isn't fully deterministic — on some runs it froze one line earlier, right after [info] txAdmin says: *. Same hang, just different timing on a race. Ruled out at the JS level — pulled ConfigStore/AdminStore source directly from the bundled system_resources/txadmin/core/index.js. Both are plain synchronous JS for a fresh profile, no blocking I/O/network/native calls. Not a txAdmin application-code bug. strace -f -tt from process launch — normal V8/Node bootstrap for ~0.6s, then the main thread's last action: rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1 RT_2], [], 8) = 0 Re: seccomp:unconfined suggestion above — installed podman, rebuilt this issue's exact Dockerfile with our own copy of the artifact, tested both configs: Default seccomp: same hang, froze at the same point, ~0.7% CPU avg over 2.5 min Possibly relevant — not universal: issue #34 has a full working boot log on a near-identical build (b90, same txAdmin version) on WSL2/Ubuntu 26.04 — resources loading, "All ready!" panel, players connecting. So this isn't broken everywhere. Given the hang centers on a self-pipe read + signal mask + kernel thread wakeup, my guess is it's kernel/distro-specific (RHEL/Rocky vs WSL2's patched kernel vs Debian) rather than a pure txAdmin bug — unverified guess though. Summary: genuine deadlock in Node/libuv's self-pipe signal-handling path, reproducible on bare metal and in containers (with/without seccomp), apparently not universal across environments. Happy to provide the full raw strace log if useful. Workaround: same as other reports — cfx-server +exec server.cfg directly (skipping embedded txAdmin) works fine. |
Update — workaround found: it's a seccomp issue.First, thanks @tabarra for taking care of my issue. I tried running my server with the two env vars but didn't get any more details, maybe I'm using them incorrectly? The comment from @5LABS is very interesting and worked for me. Running the container with the default Docker seccomp profile hangs at Server data will be saved in ... and never opens port 40120. Adding So the Enhanced (early-access) server relies on a syscall that Docker's default seccomp profile blocks, which the Legacy build doesn't. Disabling seccomp entirely is a heavy-handed workaround; ideally the server should avoid the blocked syscall, or you could document the specific one needed so users can allow just that in a custom profile. |
|
I can also confirm that txAdmin ( The result: I tested with a derivative of Docker’s default seccomp profile where the fallback action was changed from SCMP_ACT_ERRNO to SCMP_ACT_LOG. txAdmin started normally and the audit log contains the syscalls which would have been blocked: On x86-64 these are: Audit examples: If the integrated Node/txAdmin runtime could have a graceful fallback when io_uring returns EPERM that would enable compatibility with this type of environment. |
|
You must use Ubuntu OS (for Linux). It does not work on Rocky Linux due to kernel issues. |
|
I can run it perfectly on docker container with a simple compose |



Uh oh!
There was an error while loading. Please reload this page.
Summary
Summary
The GTA V Enhanced (early-access) Linux server artifact hangs during startup when run
inside a Docker container. The process freezes at 0% CPU right after
Server data will be saved in ..., before txAdmin prints its "All ready!" panel — so thetxAdmin web server (port 40120) never binds and the server is unusable.
The exact same artifact, on the same host, run on bare metal, starts perfectly (prints
the txAdmin setup URL + PIN and binds port 40120). The hang is Docker-specific.
Version / build
cfx-server_linux_x64.tar.xzURL:
https://downloads.cfx-services.net/prod/019f8155-958f-7748-af5a-e80e9b48966c/cfx-server_linux_x64.tar.xzIssue type
Server
Repro rate
Always
Server build version
latest
OS
No response
CPU
No response
GPU
No response
RAM
No response
Storage type
None
Connection type
None
ISP and bandwidth
No response
DxDiag
No response
Network graph
No response
Platform
Docker
OS version / distribution
Debian, kernel
6.12.74+deb13+1-amd64, x86_64CPU
AMD EPYC 4244P - 6c/12t - 3.8 GHz/5.1 GHz
RAM
64 Go 5200 MHz
Using txAdmin?
Yes
Hosting provider
Cloud provider (AWS, GCP, Azure, etc.)
Machine type
Dedicated
/perf endpoint output
No response
DDoS protection
No response
ulimit -n value (Linux only)
No response
Docker Compose file (Docker only)
Steps to Reproduce
Build the image from the Enhanced (early-access) Linux artifact and run it. Dockerfile used.
Build
docker build -t fxtest .
Run
docker run --rm -p 40120:40120 fxtest
Expected Behavior
The server should complete startup inside Docker the same way it does on bare metal:
txAdmin finishes booting, prints its setup panel and PIN, and binds the web port (40120).
Confirmed on bare metal (same artifact, same host, via the bundled
run.sh)Actual Behavior
Inside a Docker container, startup freezes. The logs stop after 4 lines and never advance;
the process sits at 0% CPU indefinitely:
connection reset(nothing listening inside the container)./proc/1/task/1/wchanshows the main thread blocked onpipe_read(State:Ssleeping,8 threads; worker threads in
futex_wait, event loop inepoll_wait).strace -fshows only thread-creatingclone()calls (CLONE_THREAD) succeeding — noclone3, and no processfork/execve. It hangs before spawning the FXServer child process.The freeze happens at the exact point where, on bare metal, txAdmin prints the "All ready!" panel.
Evidence
No response
Additional Context
Virtual Machine on Proxmox (on the server details provided upper)
Debug and written with Claude AI.
All reactions