box64
box64 copied to clipboard
ark survival evolved dedicated server crash on launch
Ark survival evolved dedicated server crashing on launch. Install has been validated vi steamcmd.
ubuntu@Foundry:~/Steam/steamapps/common/ark_server/ShooterGame/Binaries/Linux$ ./server_start.sh Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS PageSize:4096 Box64 with Dynarec v0.1.9 098317e built on May 2 2022 17:21:44 Using default BOX64_LD_LIBRARY_PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/ Using default BOX64_PATH: ./:bin/ Counted 27 Env var Looking for ./ShooterGameServer argv[1]="TheIsland?listen?SessionName=avatarark?ServerPassword=xxx?ServerAdminPassword=xxx" argv[2]="-server" argv[3]="-log" Using native(wrapped) libpthread.so.0 Using native(wrapped) libdl.so.2 Using native(wrapped) librt.so.1 Using emulated /home/ubuntu/Steam/steamapps/common/ark_server/ShooterGame/Binaries/Linux/../../../Engine/Binaries/Linux/libsteam_api.so Using emulated libEOSSDK-Linux-Shipping.so Using native(wrapped) libm.so.6 Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6 Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1 Using native(wrapped) libc.so.6 Using native(wrapped) ld-linux-x86-64.so.2 Using native(wrapped) libresolv.so.2 Warning: Global Symbol _ZTH15GCrashErrorType not found, cannot apply R_X86_64_GLOB_DAT @0xffffab8a8f10 ((nil)) in libEOSSDK-Linux-Shipping.so Warning: Global Symbol _ZTH18GCrashErrorMessage not found, cannot apply R_X86_64_GLOB_DAT @0xffffab8a8f08 ((nil)) in libEOSSDK-Linux-Shipping.so Shutdown handler: initalize. Using binned. 4.5.1-0+UE4 7038 3077 404 10 [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed. Using emulated steamclient.so Error loading needed lib crashhandler.so Warning: Cannot dlopen("crashhandler.so"/0xffff9606b8a8, 2) Error loading needed lib /home/ubuntu/Steam/steamapps/common/ark_server/ShooterGame/Binaries/Linux/steamservice.so Warning: Cannot dlopen("/home/ubuntu/Steam/steamapps/common/ark_server/ShooterGame/Binaries/Linux/steamservice.so"/0xffff852370b0, 2) Error loading needed lib steamservice.so Warning: Cannot dlopen("steamservice.so"/0xffff852370b0, 2) Setting breakpad minidump AppID = 346110 Error loading needed lib /home/ubuntu/.steam/sdk64/libsteam.so Warning: Cannot dlopen("/home/ubuntu/.steam/sdk64/libsteam.so"/0xffffac2c3560, 2) Error loading needed lib libsteam.so Warning: Cannot dlopen("libsteam.so"/0xffffacb4754d, 2) 112250|0x1b180eb: Unimplemented Opcode (FF) 64 66 0F 2E 04 C5 D0 F7 FF FF 89 C3 77 02 89 /home/buildbot/buildslave/steam_rel_client_linux64/build/src/tier1/../tier1/fileio.cpp (4008) : Assertion Failed: CFileWriterThread: pending file writer content_log.txt /home/buildbot/buildslave/steam_rel_client_linux64/build/src/tier0/threadtools.cpp (1416) : Assertion Failed: Thread synchronization object is unuseable Shutdown handler: cleanup.
Got the exact same issue, Could you find a solution for that or did you give up like me?
I have to check what this missing opcode is first, and see if I can add it.
Got the exact same issue, Could you find a solution for that or did you give up like me?
Gave up and moved to an x86 closet server. In fact, couldn’t get Conan exiles or 7 days to run start either. love the idea of being able to leverage the free oracle cloud service for this stuff but emulation so far for servers has been a hard fail. Steam cm works for install but that is snout it. Hosting works great for foundry and Minecraft though :p, but no emulation needed there.
Yeah man, It would be really good if it worked. Maybe ptitSeb would be able to add the opcode, who knows. I can just hope I guess
i also wanted to create an ark server but it gives the same error :(
If I'm reading the code correctly, the opcode in question is already implemented here: https://github.com/ptitSeb/box64/blob/59e367a88e3569b7bb470cf796df0f86e5207b1a/src/emu/x64run660f.c#L219
and the problem is that it's not implemented in the dynarec portion of the code. If I disable dynarec, the server stops running on a different opcode:
16714|0x1b37ad0: Unimplemented Opcode (00) 64 F2 42 0F 10 04 FD D0 F7 FF FF 64 66 0F 2E
I couldn't figure out which opcode that one is, though (MOVSD maybe?)
Yes and no.
First Opcode is movsd
, but acting on fs:
segment because of the 64
prefixes.
Need to add it, as the "FS:" opcodes are speicific (for better speed, to avoid taking segment into account for "regular" versions)
The UCOMISD opcode is the next one...
Cool! Out of curiosity, what tool is the screenshot from?
I'm happy to test out your changes and capture debugging information. Now with Dynarec I'm seeing:
22311|SIGILL @0x8631ff64 (???(0x8631ff64)) (x64pc=0x1b37adb//steamcmd/ark_survival_evolved/ShooterGame/Binaries/Linux/ShooterGameServer:"/steamcmd/ark_survival_evolved/ShooterGame/Binaries/Linux/ShooterGameServer + 0x1737a70", rsp=0xffff98271a20, stack=0xffff97a82000:0xffff98282000 own=(nil) fp=0xffff98271a50), for accessing 0x8631ff64 (code=1/prot=7), db=0x863b4630(0x8631fd24:0x863200a0/0x1b37a70:0x1b37b0c//steamcmd/ark_survival_evolved/ShooterGame/Binaries/Linux/ShooterGameServer + 0x1737a70:clean, hash:3a89249f/3a89249f) handler=(nil)
RAX:0x0000000000000001 RCX:0x0000000000000000 RDX:0x00000000bb269c00 RBX:0x0000000000000100
RSP:0x0000ffff98271a20 RBP:0x0000ffff98271a50 RSI:0x0000ffff99037dc0 RDI:0x00000000bab31480
R8:0x0000000000000000 R9:0x0000000000000013 R10:0x0000000100001fff R11:0x0000000000001000
R12:0x0000000000000056 R13:0x00000000bab31490 R14:0x00000000bab31480 R15:0x0000000000000000
RSP-0x20:0x0000000000000055 RSP-0x18:0x000000000000001e RSP-0x10:0x0000ffff98271ab6 RSP-0x08:0x0000000000000158
RSP+0x00:0x0000ffff98271be0 RSP+0x08:0x00000000bab31480 RSP+0x10:0x0000000000000056 RSP+0x18:0x00000000bab31480 opcode=00 E7 7E BE A2 1A 81 52 (64 66 0F 2E 04)
Illegal instruction (core dumped)
I diable the dynarec opcode, ,it seems I have made a mystake somewhere, but I don't see where. As I don't have that game I cannot reproduce. It will fallback to the interpretor (so slower) for this block, but hopefully it will go further now.
Maybe if I'm doing it wrong, but now the behavior is the same as in my first post above i.e. 24865|0x1b37adb: Unimplemented Opcode (FF) 64 66 0F 2E 04 C5 D0 F7 FF FF 89 C3 77 02 89
with BOX64_DYNAREC=1
and 24883|0x1b37ad0: Unimplemented Opcode (00) 64 F2 42 0F 10 04 FD D0 F7 FF FF 64 66 0F 2E
with Dynarec off.
If it matters, my build command is:
git pull
cmake .. -DARM_DYNAREC=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUSE_CCACHE=1
make -j4
sudo make install
I'll keep testing the changes and updating my results here, but FYI you can install the ARK server using steamcmd and anonymous login (i.e. don't need to own the client to install the server). I didn't bother trying to get steamcmd working on arm64, instead I just downloaded the Ark server to a network drive from an amd64 Linux instance.
I diable the dynarec opcode, ,it seems I have made a mystake somewhere, but I don't see where. As I don't have that game I cannot reproduce. It will fallback to the interpretor (so slower) for this block, but hopefully it will go further now.
Just as an aside you don’t actually need to own the game to install the server and run it. Only the client requires a license (though those are free atm too). https://ark.fandom.com/wiki/Dedicated_server_setup
Oh yes, ARK was free on steam, I even claimed it (and forgot I did). I'll check the server later.
I can confirm that the server works now. I've only had it running for a few minutes so I can't speak to its stability, but I was able to connect.
I can confirm that the server works now. I've only had it running for a few minutes so I can't speak to its stability, but I was able to connect.
What command string are you using to launch? Going try this again ;)
I'm currently using ShooterGameServer TheIsland?listen -server -log -NoBattlEye -crossplay
. I have BattlEye disabled, but it seemed to start with it enabled too. I imagine you can remove the crossplay option. I set the session name/password through the config file, but you can add those options to the command line as well.
Thanks for the update! I got it working as well, and played for about half an hour with no issues. Very impressed with the performance and stability so far. In a few days I'll get some friends on the server and we'll put some more load on it.
Okay, we tested it out a bit yesterday. The good news is that we can close this bug out, definitely no crashes. However we saw some weird issues, like dinos pooping in large quantities (rather than one pellet at a time), difficulty using lasso on a horse (but not impossible), and other players seeing incorrect locations for my player, or not seeing my mount (just a few times, and then it was fine). Since Ark is known to have a bunch of bugs at any given time :P I want to double check the same server on the PC before opening a bug here.
I should add that I did have the ARK server crash with a segmentation fault after around 25 hours of uptime. I don't know yet if it was just a fluke, or if it will become a recurring issue. Although, yes, ARK is buggy on its own so the crash might not have been related to box64. :shrug:
After almost 3 days my Ark server also crashed with just a:
Signal 11 caught.
EngineCrashHandler: Signal=11
Signal 11 caught.
EngineCrashHandler: Signal=11
It looks like the amount of memory used was slowly increasing over time (with no players logged in) until it finally crashed. I've never run the server for this long before, so it's hard to say if it's unique to running under box64. Will keep using it meanwhile, we need more data! :)
I had the ARK server crash once more after the same amount of time. I tried starting it in a screen session instead of as a systemd service, and it hasn't crashed yet after 2 1/2 days. We'll see if it ends up crashing or not.
The total system memory usage hasn't increased much since starting the ARK server. I don't remember how much memory the process was using initially. Roughly how much did the ARK server memory usage grow on your system, @code-monet?
(Edit: I had to restart the server because apparently using the -servergamelog
option corrupted the Logs folder and it made players unable to connect? ARK makes no sense.)
It went up by about 700 MB over 3 days, after the last players logged out, which isn't that much (considering the 7-8 GB footprint overall), but is curious given that no one was logged in at the time. I see there's server and client updates, will get those and restart the server.
Turns out my ARK server has been up for 4 days now, after I removed LimitNOFILE
from my systemd service. Did you modify the open file limit as well?
Yes, I did that too, as per the dedicated server setup guide. I've launched the server again with updates applied, and if it segfaults, will remove that limit and retry.
Yes, I did that too, as per the dedicated server setup guide. I've launched the server again with updates applied, and if it segfaults, will remove that limit and retry.
May I ask you how did you host the server? I am using the Oracle Cloud free tier and I still get the same error, even tho I pulled the latest version of box64 and built it again. Is there a step that I missed?