default to x64 arma3server binary #1028
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I had days of headache getting an Arma3 Epoch server to run on Linux.
I ended up being stuck here:
After I fixed redis it still did not work.
I unpacked the
epoch_server.pbowith the great PboViewer.And identified this line via the error message.
Comparing that with the documentation of callExtension it seems that the
epochserver.sosimply does not return anything.I already knew that the
.sofile was moving it gives a different error message.32bit vs 64bit calling conventions?
There is also a
epochserver_x64.so. Does it use the wrong one?I renamed it and got a new error message, about calling a 64bit
.sofrom a 32bit executable.Why am I running a 32bit executable?
There is also a 64bit arma3server executable.
Let's try this.
It works! 🎉
This is one of the most subtle issues I have ever run into.
What seems to be happening is:
The
epoch_linux_startscript.shruns the 32bit arma3server executable because it is hardcoded in there.The OS happily does this, because all x64 CPUs have some backwards comparability mode to run 32bit binaries.
Only when calling back into a shared object (
.so) from theepoch_server.pbowe get some calling or argument passing convention mismatch, thusepoch_server.soreturning nothing. Which is insanely subtle.therefore I suggest to default for the x64 arma3server executable. First, in 2025 I can not imagine anyone running an arma server (or actually anything) on 32bit. Secondly, this way around the error is so subtle because of the compatibility mode, the other way around if anyone would run
arma3server_x64on a 32bit system, they would be immediately be hit with an error message saying something about x64 being in the wrong architecture and it would be obvious to use the other executable.