ptitSeb / box64

Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices
https://box86.org
MIT License
3.68k stars 262 forks source link

Valheim Dedicated Server Crashes Post Unity 2022 Update #1182

Open ejtejada opened 8 months ago

ejtejada commented 8 months ago

Hello there,

I had been running Valheim dedicated server on Ampere arm based server, using the below install script: https://gist.github.com/husjon/c5225997eb9798d38db9f2fca98891ef This was working for quite some time. However, as of a November 7th update of the server and clients to Unity 2022, the server will disconnect clients and then crash about 20 seconds after a client connects. I can confirm I am pulling and compiling a fairly recent version of box64:

box64 --version
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS PageSize:4096 Running on Neoverse-N1 with 4 Cores
Params database has 30 entries
Box64 with Dynarec v0.2.5 2a4fe803 built on Dec 24 2023 07:41:33

Finally, I would like to submit logs, but the logfiles generated are over 350 MB in size. How would I submit them here?

I am generating these logs via BOX64_LOG=2 BOX64_TRACE_FILE=valheim_arm_crash.txt /home/ubuntu/valheim_server/valheim_server.x86_64 -nographics - batchmode -port 2456 -public 1 -name serverName -password sometemporarydummypassword -savedir /home/ubuntu/valheim_data

Thank you for your time and for this awesome project.

Pohtaytoh commented 6 months ago

For context on my setup, I'm running OCI Ampere with the full specs (4 cores, 24gb ram) on the latest box64 0.2.7

Running with the env variables:

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_STRONGMEM=3

BOX64_LOG=1
BOX64_TRACE_FILE=/home/ubuntu/valheim.box64.log

I've also tried it with BOX64_DYNAREC_BIGBLOCK=2 and BOX64_DYNAREC_BIGBLOCK=3

Like others, I consistently crash within 3-5hrs whether there's someone playing or not.

ptitSeb commented 6 months ago

I installed the server from Steam, as I have the game on my collection, and started the server on my machine (it's an Ampere ADLink, so the same Neoverse-N1 CPU, but local version, not on AWS). It seems to launch fine for me.

I notice on your log the lack of libpulse-mainloop-glib.so.0 lib. You might want to install this lib maybe?

ptitSeb commented 6 months ago

(removed the image, not sure it's wise to let all those hash stuff there) That's the server running right?

husjon commented 6 months ago

Yeah that's even with crossplay enabled

ptitSeb commented 6 months ago

Well, try to install this lib: sudo apt install libpulse-mainloop-glib0 (not sure why it would sendenly be mandatory, but worth a try)

husjon commented 6 months ago

Hm I though I already had it installed, but yeah you're right that was the missing piece. The server just started up again only having log and tracefile enabled. I'll monitor it for a while and report back.

Thanks

tfp commented 6 months ago

@Pohtaytoh My server is running in exact this environment fine with zero crashes so far. As I think it happens on world save, what is your world size? (Mine is ~19Mb)

ptitSeb commented 6 months ago

For context on my setup, I'm running OCI Ampere with the full specs (4 cores, 24gb ram) on the latest box64 0.2.7

Running the physical machine localy: 128Cores and 96GB of RAM :) That's a gorgeous machine!!!

nitroinferno commented 6 months ago

@Pohtaytoh I used ~/.box64rc, but /etc/box64.box64rc also works, however if configuration exists in ~/.box64rc, it would take precedence.

See https://github.com/ptitSeb/box64/blob/main/docs/USAGE.md#usage for more information

Box64 look for 2 places for rcfile: /etc/box64.box64rc and ~/.box64rc The second takes precedence to the first, on an APP level (that means if an [MYAPP] my appears in both file, only the settings in ~/.box64rc will be applied)

You should see when you start the server that it outputs a couple of lines stating that it applied these variables. Example:

Feb 10 15:51:57 game-server systemd[881]: Started Valheim Dedicated Server.
Feb 10 15:51:57 game-server valheim_server.x86_64[42305]: Applying BOX64_LOG=1
Feb 10 15:51:57 game-server valheim_server.x86_64[42305]: Applying BOX64_DYNAREC_STRONGMEM=3
Feb 10 15:51:57 game-server valheim_server.x86_64[42305]: Applying BOX64_DYNAREC_BLEEDING_EDGE=0
Feb 10 15:51:57 game-server valheim_server.x86_64[42305]: Applying BOX64_TRACE_FILE=/home/ubuntu/valheim.box64.log
Feb 10 15:51:57 game-server valheim_server.x86_64[42305]: [UnityMemory] Configuration Parameters - Can be set up in boot.config

So something interesting to note here. I set the box64 environment variables in the .service file directly (not in /etc/box64.box64rc or ~/.box64rc). I dont get the log indicating box64 params set as above, on server start. However, my rpi4 with only 4GB can run the server typically 40-70hrs straight now after this change, It could not do this before setting these in the .service. It runs very smoothly with 2 players playing for many hours even!

I set the same params last night in the actual /etc/box64.box64rc file, and it shows in the journalctl log for the service, as quoted above. So I am wondering was box64 getting the right params previously when set directly in the .service file or was it dumb luck it was running well?

Could there be conflicts or issues setting these box64 params both in the .service AND /etc/box64.box64rc?

Valheim.service file Environment parameters:

[Service]
Environment=SteamAppId=892970
Environment=LD_LIBRARY_PATH=/home/nitro/valheim_server/linux64:$LD_LIBRARY_PATH
# comment these out when not debugging
# Environment=BOX64_LOG=2
# Environment=BOX64_SHOWBT=1
# Environment=BOX64_TRACE_FILE=/home/nitro/valheim_server/Box64_DumpLog.txt
# Environment=BOX64_TRACE_COLOR=1
Environment=BOX64_DYNAREC_STRONGMEM=3
Environment=BOX64_DYNAREC_BIGBLOCK=3
Environment=BOX64_DYNAREC_BLEEDING_EDGE=0
husjon commented 6 months ago

@nitroinferno environment variables set directly on the executable should be taking precedence over any configuration files (that is at least that's what normal).

I think the reason why you didn't see any output about them being set is because you did not have BOX64_LOG set.

nitroinferno commented 6 months ago

Ah that makes sense thanks @husjon!

Another interesting thing is when the instance autosaves I get a bunch of sigpwr and sigxcpu signals - also sometimes it throws segfaults when running (this current iteration of the program running isn't throwing segfaults though). I am using v0.2.7 57ca9dfd built on Jan 18 2024. I'm a novice (just started using linux in Dec.) and not even sure on how to update the box64 version and whether I need to run through cmake stuff again or what.

Another interesting bit is my program creates 44 threads (believe the ampere creates 36?) And mine consumes a LOT of cpu time/usage (see end code block).

Guessing the following may be because weakness od using rpi4 4gb?

nitro@raspberrypi:~ $ strace -p $(pgrep valheim) -e 'status=!all'
strace: Process 86659 attached
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGXCPU {si_signo=SIGXCPU, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---
--- SIGPWR {si_signo=SIGPWR, si_code=SI_TKILL, si_pid=86659, si_uid=1000} ---

Lot of cpu usage compared to actual runtime

nitro@raspberrypi:~/box64 $ systemctl status valheim
● valheim.service - Valheim Dedicated Server
     Loaded: loaded (/etc/systemd/system/valheim.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-02-16 20:15:25 EST; 16h ago
   Main PID: 86659 (valheim_server.)
      Tasks: 44 (limit: 3919)
        CPU: 1d 10h 43min 45.438s
     CGroup: /system.slice/valheim.service
             └─86659 /home/nitro/valheim_server/valheim_server.x86_64 -nographics -batchmode >
husjon commented 6 months ago

@nitroinferno depending on how you installed box64 but if you built it yourself after cloning the repository you could enter the folder, run git fetch; git checkout main; git pull, then cd build; make -j "$(nproc)"; sudo make install. You can then verify the version with box64 --version.

As for the cpu load, it could be due the lower cpu frequency on the raspberry pi 4 (1.5GHz). Unfortunately I can't say what the Ampere instances in OCI run at exactly but what I can find it seem that they run at about 3GHz.

Regarding threads, currently my OCI instance runs with 40 threads for Valheim with box64 v0.2.7-ea86b0e3 and a load average of about 10% (currently no players online).

I've attached strace to see if I see anything similar regarding signals. Edit: server crash, nothing from strace.

husjon commented 6 months ago

Good and bad news, server crashed after about 3.5 hours, this was without any variables set other than LOG and TRACEFILE. Tracefile did not show anything related to the crash itself. Just restarted it to get another timeframe for comparison then I'll start looking into adjusting box64 configurations.

Update: second run lasted 2 hours. On the second run I did attach strace shortly after it had started. A couple of SEGV, PWR and XCPU signal were captured.

I will start looking into configuring box64 now.

Pohtaytoh commented 6 months ago

It sounds like a potential solution for now would be to run box64 on v0.2.6 since that appears to be working.

husjon commented 6 months ago

@Pohtaytoh for OCI Ampere I agree that v0.2.6 should be fine as long as the configuration is set correctly. Referencing my comment https://github.com/ptitSeb/box64/issues/1182#issuecomment-1946242834 and https://github.com/ptitSeb/box64/issues/1182#issuecomment-1950020210, I will add a comment in my guides comment section soon for more people to try out this version and if people are satisfied with it I will update the guide and installer. :)

Pohtaytoh commented 6 months ago

Ok, I reverted to box64 v0.2.6 on my server and it seems much more stable so far. Will report back in a day to see if we get the same results you did @husjon

Update1: It's been just about 8hrs since I reverted to 0.2.6, and this has been the longest my server has been up without crashing since the Valheim update. I've been logging in every hour or so and had a friend log in with me at one point. Very stable so far.

Update2: Confirmed this morning (~19hrs since revert) that the server is still up. This is the longest we've been able to keep it running so far, and I believe this was the missing piece to replicating @husjon's results.

Results: Running on oracle cloud's Ampere A1 instance, VM.Standard.A1.Flex 4 cores, 24gb ram on box64 v0.2.6

with the following environmental variables:

~/.box64rc

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_STRONGMEM=3
#BOX64_DYNAREC_BIGBLOCK=3

BOX64_LOG=1
BOX64_TRACE_FILE=/home/ubuntu/valheim.box64.log
ptitSeb commented 6 months ago

With the exact same config file (strongmem parameter), latest box64 is not stabble with server?

ptitSeb commented 6 months ago

Also, note that the new box64 has a secret strongmem=4 parameter, that should be equivalent to the strongmem=3 of v0.2.6

husjon commented 6 months ago

With the exact same config file (strongmem parameter), latest box64 is not stabble with server?

I tried running latest box64 with the following configuration but it will not start up correctly.

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_STRONGMEM=3

It gets to a point shortly after startup (after about about 10-15 seconds) where it logs the following and locks completely.

02/18/2024 16:52:16: Fetching PlatformPrefs 'GuiScale' before loading defaults

On a normal startup, this line stay for just a few moments until the next lines pop up, like:

02/18/2024 16:53:41: Fetching PlatformPrefs 'GuiScale' before loading defaults
02/18/2024 16:53:41: Fetching PlatformPrefs 'GuiScale' before loading defaults
Privilege Multiplayer is not known on this platform. Privilege therefore is granted without check...
Privilege UserGeneratedContent is not known on this platform. Privilege therefore is granted without check...

I tried adjusting strongmem up to 4, no luck as of yet. Will continue trying.

The best so far where I've been able to connect is with latest box64 and the following configuration:

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_BIGBLOCK=0
BOX64_DYNAREC_STRONGMEM=0

Update: Seem like bigblock was causing me some issues, got it running now with the following:

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_BIGBLOCK=0
BOX64_DYNAREC_STRONGMEM=1

As in I had to explicitly set bigblock to 0

Update 2: So far the server have been running for 24 hours using STRONGMEM=2, full config:

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_BIGBLOCK=0
BOX64_DYNAREC_STRONGMEM=2

BOX64_LOG=1
BOX64_TRACE_FILE=/home/ubuntu/valheim.box64.log

Update 3: Server still chugging along (48hours) using the above mentioned configuration (from Update 2).

tiagojofran commented 6 months ago

Also, note that the new box64 has a secret strongmem=4 parameter, that should be equivalent to the strongmem=3 of v0.2.6

That looks promising. After setting the parameters to:

[valheim_server.x86_64]
BOX64_DYNAREC_STRONGMEM=4
BOX64_DYNAREC_BLEEDING_EDGE=0

My OCI instance is now running the server for 11 hours straight without crashing. That is the longest it was able to run since November last year. On a side note, I noticed the CPU usage for the process increased considerably, is that expected with strongmem = 4? I'm on v0.2.7 5924a8ec.

ptitSeb commented 6 months ago

My OCI instance is now running the server for 11 hours straight without crashing. That is the longest it was able to run since November last year. On a side note, I noticed the CPU usage for the process increased considerably, is that expected with strongmem = 4?

Yes, the the higher the strongmem parameter, the higher the cpu usage for the same workload. That's excpected.

husjon commented 6 months ago

3 days in and the server have been behaving really nicely using the following configuration on v0.2.7-ea86b0e3.

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_BIGBLOCK=0
BOX64_DYNAREC_STRONGMEM=2

I have not been able to play much but again hopping onto it every now and then, the important part is that the server is running, which it was barely able to do before. OCI Ampere instance runs on 2 core and 12GB ram, the Valheim server itself is running about 30-40% cpu and 2.0-2.5GB ram. (Load average: 0.46 0.46 0.50).

I did drop a comment in my guide letting people know of a procedure if they wanted to try out v0.2.6, using the parameters mentioned in https://github.com/ptitSeb/box64/issues/1182#issuecomment-1939612649, so far I've yet to hear anything (which could mean either no one have tried it yet or they are still testing. :)

Pohtaytoh commented 6 months ago

Just to chime in as well. Going on 4 days, and server is still going strong since we reverted to 0.2.6.

mindgal commented 6 months ago

Hi, sorry if I'm not good at explaining. I'm running a server on a raspberry pi 5 with crossplay enabled. I have friends with PC and Xbox. If just one type of platform is connected everything work well and we can play for hours but if both are connected the server crash every 10 minutes.

Here the crash report:

================================================================= Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: Native Crash Reporting Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: ================================================================= Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: Got a SIGSEGV while executing native code. This usually indicates Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: a fatal error in the mono runtime or one of the native libraries Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: used by your application. Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: ================================================================= Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: ================================================================= Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: Native stacktrace: Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: ================================================================= Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: 0x3f031151f2 - /home/rpi/valheim_server/valheim_server_Data/MonoBleedingEdge/x86_64/libmonobdwgc-2.0.so : mono_breakpoint_clean_code Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: 0x3f030bdecd - /home/rpi/valheim_server/valheim_server_Data/MonoBleedingEdge/x86_64/libmonobdwgc-2.0.so : mono_unity_backtrace_from_context Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: 0x3f03110bd1 - /home/rpi/valheim_server/valheim_server_Data/MonoBleedingEdge/x86_64/libmonobdwgc-2.0.so : mono_breakpoint_clean_code Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: 0x3f056f8d30 - /home/rpi/valheim_server/valheim_server_Data/Plugins/libparty.so : _Z11DbgLogBytesPKcmPKv Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: 0x7ef00d08f0 - Unknown Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: ================================================================= Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: Telemetry Dumper: Feb 28 14:56:27 rpi5 valheim_server.x86_64[6271]: ================================================================= Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x545122152512x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x545823518784x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x545800646720x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x545079025728x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x547474108480x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x545831448640x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x546608496704x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6360]: Could not exec mono-hang-watchdog, expected on path '/home/rpi/valheim_server/valheim_server_Data/MonoBleedingEdge/etc/../bin/mono-hang-watchdog' (errno 2) Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x547006951488x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x547923882048x from 0x548008972352x Feb 28 14:56:28 rpi5 valheim_server.x86_64[6271]: Pkilling 0x545811853376x from 0x548008972352x Feb 28 14:56:28 rpi5 systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT Feb 28 14:56:28 rpi5 valheim_server.x86_64[6360]: Error: PltResolver: Symbol sigset(optver 2: sigset@GLIBC_2.2.5) not found, cannot apply R_X86_64_JUMP_SLOT 0x3f01d59630 (0x3f01cc3bb6) in UnityPlayer.so Feb 28 14:56:28 rpi5 systemd[1]: valheim.service: Failed with result 'signal'.

My settings:

Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS SHA1 SHA2 PageSize:4096 Running on Cortex-A76 with 4 Cores Params database has 60 entries Params database has 60 entries Box64 with Dynarec v0.2.7 f02d5fc2 built on Feb 23 2024 22:59:09

[ valheim_server.x86_64] BOX64_DYNAREC_BLEEDING_EDGE=0 BOX64_DYNAREC_STRONGMEM=1 BOX64_DYNAREC_BIGBLOCK=0

Any help? thank you

husjon commented 6 months ago

Update from my last comment https://github.com/ptitSeb/box64/issues/1182#issuecomment-1957786843.

Almost forgot about the server since I haven't had time to play over the last week, but just connected to it and is still running with the following configuration (also mentioned in previous comment)

# v0.2.7-ea86b0e3

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_BIGBLOCK=0
BOX64_DYNAREC_STRONGMEM=2
● valheim_server.service - Valheim Dedicated Server
     Loaded: loaded (/home/ubuntu/.config/systemd/user/valheim_server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-02-18 21:57:20 UTC; 1 week 2 days ago

A few people in my guide have also started trying the procedure using v0.2.6, some even with crossplay enabled. So far I've yet to hear any updates which might be good news.

In my case I'm happy with the results, as soon as I hear more from the few extra people testing, I'll update here.

dre3002 commented 6 months ago

In my case I'm happy with the results, as soon as I hear more from the few extra people testing, I'll update here.

Hello, I can also help with testing. I have a "VM.Standard.A1.Flex" instance with 20GB memory. I am still new to this stuff so some of these things are beyond me, but would you be able to help me with a couple questions?

  1. I was using this to run a minecraft server but now wish to play valheim. Would it be possible to run the mc server with 15GB and valheim with 5GB on the same instance? Or would that mess with things?

  2. If I need to dedicate the instance to valheim, is 20GB overkill? Would it still run fine?

Thanks!

nitroinferno commented 6 months ago

My server has been running on my raspberry pi 4 now that only has 4GB of RAM for over a week with no crashes! Me and my friend hop on and play for hours at a time no problems. Still using the version I mentioned before: v0.2.7 https://github.com/ptitSeb/box64/commit/57ca9dfdbccf67a66be45300ecf7521bf034c1ec

Valheim developers minimum recommended RAM is 8GB. So 20 is probably a little overkill 10 GB should be fine.

husjon commented 6 months ago

@dre3002 that should be fine. My instance (although not doing much at the moment) has 12GB, but the valheim server itself uses about 20% of that (so 3GB), you might need to adjust the memory limits for both servers depending on load, but 5GB should be fine for initial testing at least :)

mindgal commented 6 months ago

My server has been running on my raspberry pi 4 now that only has 4GB of RAM for over a week with no crashes! Me and my friend hop on and play for hours at a time no problems. Still using the version I mentioned before: v0.2.7 57ca9df

Valheim developers minimum recommended RAM is 8GB. So 20 is probably a little overkill 10 GB should be fine.

Does it work with crossplay too?

husjon commented 6 months ago

Again I've been too busy with work etc so completely forgot about the Valheim server. However, today I hopped onto my OCI instance and checked the logs and found that it had crashed yesterday after running for 2.5 weeks (since the restart it has now run for just over a day). This time systemd was able to recover from it since the executable exited.

Not sure if increasing STRONGMEM could help.

The crash seem to be Mono related from what I can see from the systemd logs. Unfortunately the box logs I have enabled logs to ~/valheim.box64.log hence it was overwritten after restarting so I can't provide anything else.

Mar 07 13:09:15 game-server valheim_server.x86_64[918273]: Unloading 0 Unused Serialized files (Serialized files now loaded: 0)
Mar 07 13:09:16 game-server valheim_server.x86_64[918273]: Unloading 0 unused Assets to reduce memory usage. Loaded Objects now: 1727374.
Mar 07 13:09:16 game-server valheim_server.x86_64[918273]: Total: 1664.870040 ms (FindLiveObjects: 689.411280 ms CreateObjectMapping: 88.888240 ms MarkObjects: 876.653400 ms  DeleteObjects: 9.914800 ms)
Mar 07 13:19:16 game-server valheim_server.x86_64[918273]: 03/07/2024 13:19:16:  Connections 0 ZDOS:51670  sent:0 recv:0
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: =================================================================
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]:         Native Crash Reporting
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: =================================================================
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: Got a SIGSEGV while executing native code. This usually indicates
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: a fatal error in the mono runtime or one of the native libraries
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: used by your application.
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: =================================================================
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: =================================================================
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]:         Native stacktrace:
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: =================================================================
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]:         0x7fff031151f2 - /home/ubuntu/valheim_server/valheim_server_Data/MonoBleedingEdge/x86_64/libmonobdwgc-2.0.so : mono_breakpoint_clean_code
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]:         0x7fff030bdecd - /home/ubuntu/valheim_server/valheim_server_Data/MonoBleedingEdge/x86_64/libmonobdwgc-2.0.so : mono_unity_backtrace_from_context
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]:         0x7fff03110bd1 - /home/ubuntu/valheim_server/valheim_server_Data/MonoBleedingEdge/x86_64/libmonobdwgc-2.0.so : mono_breakpoint_clean_code
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]:         0x30333 - Unknown
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: =================================================================
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]:         Telemetry Dumper:
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: =================================================================
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: Pkilling 0x281473320415264x from 0x281471878819808x
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: Pkilling 0x281473164767200x from 0x281471878819808x
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: Pkilling 0x281472702459872x from 0x281471878819808x
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: Pkilling 0x281473256583136x from 0x281471878819808x
Mar 07 13:27:05 game-server valheim_server.x86_64[1702823]: Could not exec mono-hang-watchdog, expected on path '/home/ubuntu/valheim_server/valheim_server_Data/MonoBleedingEdge/etc/../bin/mono-hang-watchdog' (errno 2)
Mar 07 13:27:05 game-server valheim_server.x86_64[918273]: Entering thread summarizer pause from 0x281471878819808x
Mar 07 13:27:05 game-server systemd[881]: valheim_server.service: Main process exited, code=killed, status=6/ABRT
Mar 07 13:27:05 game-server systemd[881]: valheim_server.service: Failed with result 'signal'.
Mar 07 13:27:05 game-server systemd[881]: valheim_server.service: Consumed 1w 7h 2min 3.252s CPU time.
Mar 07 13:27:10 game-server systemd[881]: valheim_server.service: Scheduled restart job, restart counter is at 2.
Mar 07 13:27:10 game-server systemd[881]: Stopped Valheim Dedicated Server.
Mar 07 13:27:10 game-server systemd[881]: valheim_server.service: Consumed 1w 7h 2min 3.252s CPU time.
Mar 07 13:27:10 game-server systemd[881]: Started Valheim Dedicated Server.
Mar 07 13:27:10 game-server valheim_server.x86_64[1702826]: Applying BOX64_LOG=1
Mar 07 13:27:10 game-server valheim_server.x86_64[1702826]: Applying BOX64_DYNAREC_BIGBLOCK=0
Mar 07 13:27:10 game-server valheim_server.x86_64[1702826]: Applying BOX64_DYNAREC_STRONGMEM=2
Mar 07 13:27:10 game-server valheim_server.x86_64[1702826]: Applying BOX64_DYNAREC_BLEEDING_EDGE=0
Mar 07 13:27:10 game-server valheim_server.x86_64[1702826]: Applying BOX64_TRACE_FILE=/home/ubuntu/valheim.box64.log
Mar 07 13:27:11 game-server valheim_server.x86_64[1702826]: [UnityMemory] Configuration Parameters - Can be set up in boot.config

Update 2024-03-22: After the restart (after the mentioned crash) the server is still running fine (Box64 with Dynarec v0.2.7 ea86b0e3 built on Feb 17 2024 12:21:23). I've also made the changes available in my guide for Valheim pinning it to use box64 v0.2.6 (since it is the latest release) with the previously mentioned configuration.

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_STRONGMEM=3
tiagojofran commented 5 months ago

Upon updating box64 from v. 0.2.7 ed2697d to v. 0.2.7 eda857c, my Valheim OCI server is now once again silently crashing. Before, I was able to keep it running stable with:

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_STRONGMEM=4

But now it doesn't make any difference to use those values. Also, the logs are showing these warnings now:

Warning: Weak Symbol _ITM_memcpyRtWn not found, cannot apply R_X86_64_JUMP_SLOT @0x7fff0624f060 (0x9c0f6)
Warning: Weak Symbol _ITM_RU1 not found, cannot apply R_X86_64_JUMP_SLOT @0x7fff0624f6a0 (0x9cd76)
Warning: Weak Symbol _ZGTtdlPv not found, cannot apply R_X86_64_JUMP_SLOT @0x7fff0624fb00 (0x9d636)
Warning: Weak Symbol _ITM_RU8 not found, cannot apply R_X86_64_JUMP_SLOT @0x7fff0624fff8 (0x9e026)
Warning: Weak Symbol _ITM_memcpyRnWt not found, cannot apply R_X86_64_JUMP_SLOT @0x7fff062504a8 (0x9e986)
Warning: Weak Symbol _ZGTtnam not found, cannot apply R_X86_64_JUMP_SLOT @0x7fff06250c88 (0x9f946)

Is anyone else having a similar issue?

husjon commented 5 months ago

I have not had much time to look into it myself but since my last update (https://github.com/ptitSeb/box64/issues/1182#issuecomment-1986355781) the server was running for just over a month (using v0.2.7 https://github.com/ptitSeb/box64/commit/ea86b0e32f6249efd0b30b709405c8c3efa93013).

I just rebuilt box64 with the commit (v0.2.7 https://github.com/ptitSeb/box64/commit/eda857cb10701ccb3f726118b8865b600484b708) mentioned by @tiagojofran and restarted the server, no issues so far, but I'll check in on it a bit later today.

husjon commented 5 months ago

I forgot about the server, bogged down with work. Just hopped on the server and it's still chugging along using (v0.2.7 https://github.com/ptitSeb/box64/commit/eda857cb10701ccb3f726118b8865b600484b708)

@tiagojofran you didn't mention, but did you also update the Valheim server? Mine is running Valheim version: l-0.217.38 (network version 20)

I'll update it now, restart it and let it run for a while.

Updated: Just updated the server to Valheim l-0.217.46 (network version 23), seem to have started normally, will let it run for a couple of hours.

tiagojofran commented 5 months ago

Hi, @husjon. Yes, I updated valheim server to version 217.46 and the issue still persists. It's really strange, only valheim is giving me a hard time, other game servers are running just fine on the same system through box64, and I didn't change its settings from the previous box64 version. If I roll back to v. 0.2.7 ed2697d, the problem is gone.

husjon commented 5 months ago

Hm, I've not been able to replicate the issue @tiagojofran Server have now been running for 24 hours using Box64 with Dynarec v0.2.7 eda857cb and Valheim l-0.217.46 (network version 23)

Shouldn't make much of a difference, but these are the environment variables I use for box64.

Applying BOX64_LOG=1
Applying BOX64_DYNAREC_BIGBLOCK=0
Applying BOX64_DYNAREC_STRONGMEM=2
Applying BOX64_DYNAREC_BLEEDING_EDGE=0

Update 2024.04.17: server is still chugging along with the version mentioned above.

tiagojofran commented 5 months ago

Thank you for testing it, @husjon, I think we can now assume that the issue is probably only affecting my system. I just tried to run the server with the same settings as yours, and unfortunately it could only run for about 2 hours until it finally crashed again. I really have no idea what is happening to my system, so I think I have no alternative other than rolling back to the box64 version that still works for me. Thanks again for your help.

nitroinferno commented 4 months ago

@husjon hoping you can shed some light on the use of v0.2.7 https://github.com/ptitSeb/box64/commit/eda857cb10701ccb3f726118b8865b600484b708 or v0.2.7 eda857cb. When you stated its still chugging along with respect to v0.2.7 https://github.com/ptitSeb/box64/commit/eda857cb10701ccb3f726118b8865b600484b708, did it have faults as I do below? Most of these faults are due to mono lib it seems since these generate the mono-blob files.

I am still using v0.2.6 stable branch with the following params.

BOX64_LOG=1
BOX64_DYNAREC_BIGBLOCK=1
BOX64_DYNAREC_STRONGMEM=2
BOX64_DYNAREC_BLEEDING_EDGE=0

For whatever reason if I set BIGBLOCK to 0, it causes a lot of issues on a pi, I flagged multiple short duration faults on Apr 28th when I tried to use Bigblock=0. Either way for the most part it runs smooth anywhere from 12-24hrs. I am thinking about rolling it forward to v0.2.7 https://github.com/ptitSeb/box64/commit/eda857cb10701ccb3f726118b8865b600484b708, however wasn't sure if that was less faulty with respect to mono related crashes, or whether v0.2.7 eda857cb was either.

nitro@raspberrypi:~ $ journalctl -u valheim | grep -i exited
Mar 04 13:02:06 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=9/KILL
Mar 04 13:13:17 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=9/KILL
Mar 04 21:03:57 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=9/KILL
Mar 05 23:03:18 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Mar 08 06:03:06 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Mar 10 09:36:38 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Mar 11 04:08:51 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Mar 11 22:21:56 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Mar 14 02:02:16 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Mar 18 04:39:19 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Mar 19 00:13:36 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Mar 19 14:46:33 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Mar 21 06:03:23 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Mar 21 22:08:01 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Mar 27 13:42:31 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Mar 28 08:59:51 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Mar 29 16:48:01 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Mar 30 00:19:53 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 01 07:07:59 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 02 08:55:50 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 02 16:28:19 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 04 10:43:54 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 08 16:03:09 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 08 23:50:41 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 09 23:22:53 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 11 10:55:55 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 12 15:43:33 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 15 15:40:13 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 18 12:22:02 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 19 11:27:54 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=9/KILL
Apr 19 20:43:00 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 20 22:19:27 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 21 12:08:44 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 21 12:12:38 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 22 04:03:24 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 23 14:15:34 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 23 19:50:41 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 26 09:05:31 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 26 12:27:22 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 27 09:02:43 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 27 23:57:28 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=9/KILL
NOTE:~ $ Apr 28 20:32:54 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
NOTE:~ $ Apr 28 21:05:41 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
NOTE:~ $ Apr 28 21:09:31 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=9/KILL
NOTE:~ $ Apr 28 21:45:20 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=9/KILL
Apr 29 09:09:45 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
Apr 29 12:23:10 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
Apr 30 11:27:14 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=5/TRAP
May 01 19:19:13 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
May 02 00:08:26 raspberrypi systemd[1]: valheim.service: Main process exited, code=killed, status=6/ABRT
husjon commented 4 months ago

@nitroinferno from what I've gathered from the previous comments, there is a quite a difference running it on OCI versus a Raspberry Pi. BIGBLOCK seem to work fine on OCI Ampere instances, but not on a raspberry.

As for status on the server, it is still running.

ubuntu@game-server:~$ systemctl --user status valheim_server
● valheim_server.service - Valheim Dedicated Server
     Loaded: loaded (/home/ubuntu/.config/systemd/user/valheim_server.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-04-12 16:46:45 UTC; 2 weeks 6 days ago

I see you have a Raspberry Pi 4, so it will not be an exact match but I'll do some testing on my Raspberry Pi 5 (I unfortunately do not have a Pi 4 available) over the weekend. (Side note: I am using the same build parameters as RPI4, -D RPI4ARM64=1 -D CMAKE_BUILD_TYPE=RelWithDebInfo since my RPI5 is not using 16K pages.)

nitroinferno commented 4 months ago

Oh wow 2 weeks uptime with no faults! With this I think ill roll my box64 forward to v0.2.7 https://github.com/ptitSeb/box64/commit/eda857cb10701ccb3f726118b8865b600484b708. I'll Give a test run and report back. Apparently I've read pi5 has its own share of issues as well outside pi4.

What's interesting is when I was using build: v0.2.7 https://github.com/ptitSeb/box64/commit/57ca9dfdbccf67a66be45300ecf7521bf034c1ec it ran best with BIGBLOCK=3, however v0.2.6 cannot use bigblock=3 at all. It will not even get through start sequence.

There were not a lot of crashes with v0.2.7 57ca9df, however it would instead silently lock up about the same amount: 12-24hr intervals.

husjon commented 4 months ago

@nitroinferno I've had the server running on my RPI 5 for 2 days now using eda857c I haven't played on it, just let it run on its own. I'm not sure if the issue you're having is an isolated case for RPI 4. What are the specs of the RPI 4 you have?

My RPI 5 is the 4GB model.

pi@raspberrypi:~ $ box64 --version | grep built
Box64 with Dynarec v0.2.7 eda857cb built on May  2 2024 21:21:30
pi@raspberrypi:~ $ systemctl --user status valheim_server.service
● valheim_server.service - Valheim Dedicated Server
     Loaded: loaded (/home/pi/.config/systemd/user/valheim_server.service; enabled; preset: enabled)
     Active: active (running) since Thu 2024-05-02 22:54:20 CEST; 2 days ago
nitroinferno commented 4 months ago

Pi 4b rev1.2 4gb: Mine has been up 3 days this current iteration but typically it faults near this or 2 day mark.

nitro@raspberrypi:~/box64 $ cat /proc/cpuinfo
processor       : 0
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3
processor       : 1
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3
processor       : 2
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3
processor       : 3
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3
Revision        : c03112
Serial          : 100000008f6a4932
Model           : Raspberry Pi 4 Model B Rev 1.2
husjon commented 4 months ago

I was partially wrong in my previous comment. It seem like the server have deadlocked since nothing has been logged to journalctl since May 3rd.

Actually after trying to connect to it, it seem like it is still running (to some degree), but is not able to handle connections. I get the following entries in journalctl when trying to connect

May 03 12:25:06 raspberrypi valheim_server.x86_64[10338]: 05/03/2024 12:25:06: No autobackup needed yet...
May 03 12:26:09 raspberrypi valheim_server.x86_64[10338]: 05/03/2024 12:26:09:  Connections 0 ZDOS:81  sent:0 recv:0
May 03 12:36:09 raspberrypi valheim_server.x86_64[10338]: 05/03/2024 12:36:09:  Connections 0 ZDOS:81  sent:0 recv:0
May 03 12:46:09 raspberrypi valheim_server.x86_64[10338]: 05/03/2024 12:46:09:  Connections 0 ZDOS:81  sent:0 recv:0
May 05 15:22:44 raspberrypi valheim_server.x86_64[10338]: src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp (1115) : Assertion Failed: Unexpected auth avail -100 (Expired)
May 05 15:24:03 raspberrypi valheim_server.x86_64[10338]: src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp (1115) : Assertion Failed: Unexpected auth avail -100 (Expired)
May 05 15:24:03 raspberrypi valheim_server.x86_64[10338]: src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp (1115) : Assertion Failed: Unexpected auth avail -100 (Expired)

I'm gonna do an upgrade of the OS, reboot and restart the server, then let it run for a few more days.

nitroinferno commented 4 months ago

Ah yes this is a common occurrence I've come across with the rpi. I've chalked it up to the limited resources it has available. I created a service to detect and force a restart. Uses: [ps -o state -p $PID --no-headers] to get state, if its been S constantly for 60s its deadlocked. It only happens occasionally on v0.2.6 - its usually ABRT or TRAP signal kills (which i believe are the mono crashes). What's interesting is I noticed the deadlock was more prevelant on later builds - whereas the mono crashes were a lot less.

Somehow setting bigblock=3 significantly reduced the number of deadlocks in later builds - I have no idea why. I'll spin up a da857c later once I get a chance.

husjon commented 4 months ago

Seem like it deadlocked once again after about 30 hours on my RPI5. I'll try to adjust some of the box64rc parameters to see if I can find something that works a bit better.

spwly commented 4 months ago

I am also trying to get a server working on a RPI5 (8GB) with box64. I tried a few of the settings for box64rc mentioned here but haven't been successful. Longest I had the server running before the silent crash was only an hour. Admittedly I can't figure out how to roll my box64 back to a different version so I have only been using the somewhat latest box64 v0.2.7 ecf19029 .

Appreciate all the work everyone has done so far - I will be sure to update with my settings if I get it stable on my system.

Update: Managed to install v0.2.6 e42001b2 which didn't seem to make a difference. Crashes pretty consistently after 5 minutes.

husjon commented 4 months ago

So far I've had the server running for about 36 hours with the problematic version mentioned above. (eda857cb) Box64 with Dynarec v0.2.7 eda857cb built on May 2 2024 21:21:30

I've been using the following settings:

[valheim_server.x86_64]
BOX64_DYNAREC_BLEEDING_EDGE=0
BOX64_DYNAREC_BIGBLOCK=0
BOX64_DYNAREC_STRONGMEM=2

BOX64_LOG=1
BOX64_TRACE_FILE=/home/pi/valheim.box64.log

@spwly it depends on how you installed box64, but assuming you used git, you'd need to check out the version / commit you're interested in, then do the cmake / make / make install procedure. For example:

cd ~/box64/build
git fetch

git checkout <TAG / VERSION HERE> # (specific version: "v0.2.6" or commit "eda857cb")
cmake .. -DRPI4ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j"2"

sudo make install
spwly commented 4 months ago

Many thanks @husjon - I got my version to eda857c . It didn't seem to affect my performance either, so I determined my issue must be elsewhere. Turns out, I hadn't been installing the box64rc file, and was only making changes to the file within /system. Properly installed with your settings, it has been up and running for over two hours now. I will let it run until I get a crash and report back with my total uptime.

Update: Must have jinxed it, crapped out right at 3 hours. Progress is progress though

husjon commented 4 months ago

Glad you got it running, but of course annoying that it didn't work after all :/ Just to make sure that it is picking up the environment variables (if you used the exact ones I mentioned), you should see the following lines shortly after starting it (only if LOG is set to 1 or higher).

May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_LOG=1
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_DYNAREC_BIGBLOCK=0
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_DYNAREC_STRONGMEM=2
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_DYNAREC_BLEEDING_EDGE=0
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_TRACE_FILE=/home/pi/valheim.box64.log

I have had some success as my server have been running for close to 3 days now using the settings mentioned in my previous comment (https://github.com/ptitSeb/box64/issues/1182#issuecomment-2105673700). I will however do a restart of the valheim server and do another run to see if it was just a lucky run. :)

husjon commented 4 months ago

Almost 48 hours later and the server is still running normally on my RPI 5 using the settings mentioned above.

pi@raspberrypi:~ $ systemctl --user status valheim_server.service
● valheim_server.service - Valheim Dedicated Server
     Loaded: loaded (/home/pi/.config/systemd/user/valheim_server.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-05-12 22:56:45 CEST; 1 day 18h ago
   Main PID: 883789 (valheim_server.)
      Tasks: 41 (limit: 4387)
        CPU: 22h 54min 16.810s
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/valheim_server.service

I set up a similar monitoring solution as you @spwly but instead of restarting I just get a notification so that I can investigate it further. :/

One thing that I just started thinking about is, are you using an SD card as storage medium? Mine is set up to use a USB stick, I'm using the Samsung BAR Plus USB 3.1 128GB (https://www.samsung.com/au/memory-storage/usb-flash-drive/usb-3-1-flash-drive-bar-plus-128gb-titanium-gray-muf-128be4-apc/)

spwly commented 3 months ago

Just to make sure that it is picking up the environment variables (if you used the exact ones I mentioned), you should see the following lines shortly after starting it (only if LOG is set to 1 or higher).


May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_LOG=1
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_DYNAREC_BIGBLOCK=0
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_DYNAREC_STRONGMEM=2
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_DYNAREC_BLEEDING_EDGE=0
May 09 23:28:28 raspberrypi valheim_server.x86_64[18757]: Applying BOX64_TRACE_FILE=/home/pi/valheim.box64.log

Thanks for mentioning this, because this was definitely not showing up for me. Apparently my box64rc settings were never being read. My issue was the file in the home directory, box64.box64rc needed to be renamed to just ".box64rc"!

With those parameters finally successfully set, I booted up the server last night after updating (new biome is out!) and played for a few hours with two other players. Everything ran smoothly and the server is still running 18 hours later.

I am running everything off the internal SD card, so if I get any more performance issues, I will try running off an SSD and see if it has any effect. I'm also curious if running the pi headless would speed things up.