satisfactory-server: Steamcmd Segmentation Fault on Subsequent Container Runs
Describe the Bug I have been experiencing container error when starting/restarting. The process is cyclical. Restarting the container or creating a new one from the image does not help. I run the image on the synology NAS.
A fragment of the log from the console:
Connecting anonymously to Steam Public...OK
Waiting for client config...OK
Waiting for user info...OK
Update state (0x5) verifying install, progress: 0.15 (10493888 / 7124928656)
Update state (0x5) verifying install, progress: 11.45 (815645455 / 7124928656)
Update state (0x5) verifying install, progress: 23.10 (1646075198 / 7124928656)
Update state (0x5) verifying install, progress: 34.57 (2463010896 / 7124928656)
Update state (0x5) verifying install, progress: 46.11 (3285635716 / 7124928656)
Update state (0x5) verifying install, progress: 57.92 (4126688358 / 7124928656)
Update state (0x5) verifying install, progress: 69.68 (4964844867 / 7124928656)
Update state (0x5) verifying install, progress: 81.42 (5801249014 / 7124928656)
Update state (0x5) verifying install, progress: 93.14 (6636469831 / 7124928656)
Success! App '1690800' fully installed.
/home/steam/.steam/steamcmd/steamcmd.sh: line 39: 50 Segmentation fault (core dumped) $DEBUGGER "$STEAMEXE" "$@"
Checking available memory...27GB detected
Setting autosave number to 9
Setting crash reporting to True
Setting max objects number to 2162688
Setting max tick rate to 30
Setting timeout number to 30
Setting max players to 4
Setting autosave interval to 600s
Setting disable seasonal events to 0
Setting network quality number to 3
Setting auto pause to True
Setting autosave on disconnect to True
Checking available storage...8506GB detected
Downloading the latest version of the game...
Redirecting stderr to '/home/steam/.steam/logs/stderr.txt'
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[ 0%] Checking for available updates...
[----] Verifying installation...
Steam Console Client (c) Valve Corporation - version 1687387651
-- type 'quit' to exit --
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
dlmopen libSDL3.so.0 failed: libSDL3.so.0: cannot open shared object file: No such file or directory
OK
Connecting anonymously to Steam Public...OK
...
...
Your Runtime Command or Docker Compose File
{
"CapAdd" : [],
"CapDrop" : [],
"cmd" : "",
"cpu_priority" : 90,
"enable_publish_all_ports" : false,
"enable_restart_policy" : false,
"enable_service_portal" : null,
"enabled" : true,
"env_variables" : [
{
"key" : "PATH",
"value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
{
"key" : "USER",
"value" : "root"
},
{
"key" : "HOME",
"value" : "/root"
},
{
"key" : "LANG",
"value" : "en_US.UTF-8"
},
{
"key" : "LANGUAGE",
"value" : "en_US:en"
},
{
"key" : "AUTOPAUSE",
"value" : "true"
},
{
"key" : "AUTOSAVEINTERVAL",
"value" : "600"
},
{
"key" : "AUTOSAVENUM",
"value" : "5"
},
{
"key" : "AUTOSAVEONDISCONNECT",
"value" : "true"
},
{
"key" : "CRASHREPORT",
"value" : "true"
},
{
"key" : "DEBUG",
"value" : "false"
},
{
"key" : "DISABLESEASONALEVENTS",
"value" : "false"
},
{
"key" : "GAMECONFIGDIR",
"value" : "/config/gamefiles/FactoryGame/Saved"
},
{
"key" : "GAMESAVESDIR",
"value" : "/home/steam/.config/Epic/FactoryGame/Saved/SaveGames"
},
{
"key" : "MAXOBJECTS",
"value" : "2162688"
},
{
"key" : "MAXPLAYERS",
"value" : "4"
},
{
"key" : "MAXTICKRATE",
"value" : "30"
},
{
"key" : "NETWORKQUALITY",
"value" : "3"
},
{
"key" : "PGID",
"value" : "1000"
},
{
"key" : "PUID",
"value" : "1000"
},
{
"key" : "SERVERBEACONPORT",
"value" : "15000"
},
{
"key" : "SERVERGAMEPORT",
"value" : "7777"
},
{
"key" : "SERVERIP",
"value" : "0.0.0.0"
},
{
"key" : "SERVERQUERYPORT",
"value" : "15777"
},
{
"key" : "SKIPUPDATE",
"value" : "false"
},
{
"key" : "STEAMAPPID",
"value" : "1690800"
},
{
"key" : "STEAMBETA",
"value" : "false"
},
{
"key" : "TIMEOUT",
"value" : "30"
}
],
"exporting" : false,
"id" : "90d43a03b0c4a643eeee825838cb6b9dfeda683d8e73ef1ba30786d0b89b1735",
"image" : "wolveix/satisfactory-server:latest",
"is_ddsm" : false,
"is_package" : false,
"links" : [],
"memory_limit" : 17179869184,
"name" : "wolveix-satisfactory-152",
"network" : [
{
"driver" : "bridge",
"name" : "satisfactory"
}
],
"network_mode" : "satisfactory",
"port_bindings" : [
{
"container_port" : 15000,
"host_port" : 0,
"type" : "udp"
},
{
"container_port" : 15777,
"host_port" : 0,
"type" : "udp"
},
{
"container_port" : 7777,
"host_port" : 0,
"type" : "udp"
}
],
"privileged" : false,
"shortcut" : {
"enable_shortcut" : false,
"enable_status_page" : false,
"enable_web_page" : false,
"web_page_url" : ""
},
"use_host_network" : false,
"volume_bindings" : [
{
"host_volume_file" : "/docker/satisfactory",
"mount_point" : "/config",
"type" : "rw"
}
]
}
System Specs:
===== START ISSUE REPORT =====
OS: Linux DS923plus 4.4.180+ #42962 SMP Fri May 26 23:30:43 CST 2023 x86_64 GNU/Linux synology_r1000_923+
CPU:
RAM: 27GB/32GB
HDD sys: 1GB/2GB (79% used)
HDD total: 11T/2.2T (21% used)
===== END ISSUE REPORT =====
Additional Context
docker images | grep satisfactory
wolveix/satisfactory-server latest e2494126d956 9 days ago 413MB
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 68 (24 by maintainers)
My problem just disappears.
For who want to debug, can just try to use docker-compose run to avoid the container to be destroyed after the server fail.
then manually use
/init.sh
to start the server.I use
/init.sh
to start the server and the first try failed as described in this issue and the second run is just a success.Also I can confirm that the issue is not related to lib libSDL3.so
I got this libSDL3 line output still, but my server is already working.
That is such a fantastic news, I hope you will still consider trying with wolveix image until a resolution is found.
I am actually very interested to get that issue fixed and if applicable I don’t mind having a session with you, me and @wolveix to troubleshoot live.
Thanks for your update!
@wolveix Thanks for the hint, that did the trick for me.
@wolveix well, when I choose update to be true, it show an error with network when trying to connect and fail to connect to game.
Yet, I need to confirm further and perform another test, since I already decreased the resource limits (reserve 6GB and limit to 16GB [My VM was 18GB) it was failing, and when I reverted back to set update=false and increased VM Ram to 24 and limits to the one you provided (doc compose) it worked fine.
Anyway, I will test again when am back home different scenarios just to isolate the culprit of the issue and will report back.
I would like to thank you for your efforts in dockerizing the game server. Fantastic work.
I think I have been through all the suggestions in this thread with no success, but I did just try running the image without any bind mounts:
docker run -d --name=satisfactory-server-test -h satisfactory-server-test -e MAXPLAYERS=4 -e PGID=1000 -e PUID=1033 -e STEAMBETA=true -m 16G --memory-reservation=12G -p 7777:7777/udp -p 15000:15000/udp -p 15777:15777/udp wolveix/satisfactory-server:latest
This starts the server without any issues. I also cannot seem to reproduce the segmentation error after restarting the server. It passes the steam update with ease and starts the server right away.
I then started the server again, this time with a bind mount but to a completely blank folder:
docker run -d --name=satisfactory-server-test -h satisfactory-server-test -e MAXPLAYERS=4 -e PGID=1000 -e PUID=1033 -e STEAMBETA=true -v /volume1/docker/satisfactory-server-test:/config -m 16G --memory-reservation=12G -p 7777:7777/udp -p 15000:15000/udp -p 15777:15777/udp wolveix/satisfactory-server:latest
Again, the server starts without any issues - I can connect, play and everything works great. I then ran
docker restart satisfactory-server-test
and this throws the segmentation error:I tried this three times (each time with a clean folder), and it had a 100% reproduction rate.
Earlier I did not quite put it correctly: not only restarting, but also stopping and restarting again. Without a difference. I created a new project from scratch using the settings, not the rules of an existing project.
Still, I did a short test. I used the standard Docker Compose file recommended by you. Created a container without mounting the “config” folder. Removed the line:
volumes: - '/path/to/config:/config'
With theSKIP UPDATE = false
Restarting the container, I get a fragmentation error.home/steam/.steam/steamcmd/steamcmd.sh: line 39: 50 Segmentation fault (core dumped) $DEBUGGER "$STEAMEXE" "$@"
Same issue after I upgraded from last year’s version eee7de98370e to f13f51f7abdf without cleanup. I will try to debug.
No. I will try.
@konstander huh, that’s interesting. Looks like they forked my repo to begin with (everything is laid out identically to an old commit), but they never adopted our permissions fixes.
That could potentially be where the issue lies? I’ll have a proper look through in a bit, but that’s really interesting 😅
For the sake of interest, I tried to launch an image of another author, check what will happen. You know what? Starts, stops restarts and no fragmentation errors. >< p.s. By the way, thanks to the update of the DSM interface in synology, the docker package has acquired the function of “launching projects”, including through the Docker Compose file. It is a pity that this did not solve the fragmentation problem.
@m3talliz3d nothing… The directory is empty. So I mounted
/core
correctly earlier, there are just no dumps there.That is strange… everything is working fine now.
Note: RAM = 23GB/24GB
T#1: (update=false) -> Ran
docker compose up
. -> connected to the game and it worked.T#2: -> Stopped container with
docker compose down
. -> reverted update to true as default" . -> Started container. -> Connected to game successfully.T#3: -> Stopped container with
docker compose down
. -> Set limits to –> Limit = 10 GB –> Reservation = 8GB -> Started container. -> Connected to game successfully.T#4: -> Stopped container with
docker compose down
. -> Power off VM and change its RAM to 12GB instead of 24GB -> Started container. (with same docker-compose changes in T#3) -> Connected to game successfully.I am not sure what was the issue exactly before but the error I had previously was
now it looks like everything is running smoothly.
error regarding
libSDL3
looks like safe to ignore, it didn\t cause any issues on my side@Reticulmz What is your RAM available to be used or the one that WSL use/allocate?
I’ve been doing some digging around, and maybe it’s due to running out of stack space. Try checking with ulimit -a.
In my case, I think it’s because wsl2 didn’t free memory and steamcmd didn’t start due to lack of memory. I think you can avoid the error by specifying the memory limit or swap in .wslconfig for example.
Yeah, setting
SKIPUPDATE=true
will completely ignore SteamCMD, hence why it works 😄 I still don’t really understand why your specific environment isn’t handling SteamCMD properly, and crashing. I did update the image manually last night, but I merely rebuilt it in the hopes that an upstream update may resolve the issue for you.I really appreciate your hard work investigating this issue, and wish that I had more to add. I’m pretty slammed with work right now, but I’m checking in when I can 😃
An interesting observation:
It was possible to load the server several times successfully with a save. Deleted the file every time FactoryServer.sh (yes, in the process of launching it, it was created anew and everything seemed to be going as it should).
Error again all in a circle, ohh God…
home/steam/.steam/steamcmd/steamcmd.sh: line 39: 50 Segmentation fault (core dumped) $DEBUGGER "$STEAMEXE" "$@"
@wolveix
Perhaps. All I understood was that the files are checked 100%, similarly, the files are downloaded 100% (if you delete everything). But then the server does not start. Perhaps some error during verification or transmission of an “error signal” to the log stops the process. I don’t understand well at this moment.
It usually ends there:
home/steam/.steam/steamcmd/steamcmd.sh: line 39: 50 Segmentation fault (core dumped) $DEBUGGER "$STEAMEXE" "$@"
I am using the docker application (package) in synology nas. The settings file I have given is the container configuration export file. Unfortunately, input options via the “console” (as on a PC) via the DSM synology interface (GUI) are not supported, I did not try using SSH. I repeat, earlier everything worked with your image. All container parameters are perfectly configured in the graphical shell of the docker application.