Important: FiveM Linux server builds at risk


#1

We regret to have to announce that the FiveM/FXServer Linux server builds are considered an endangered species. This is due to the following reasons:

  • Alpine dropped libc++ packages and didn’t update clang packages for quite some time. This broke our build as they no longer provide libc++ at all.
  • gcc is unsuitable for compiling FiveM codebase due to bugs with advanced C++ features, and insufficient error reporting to write code around it. This code compiles fine with both clang and cl, meanwhile even GCC 8.2.0 does not work.
  • libstdc++ was long-unsuitable for building FiveM, now does work at compile-time but there’s runtime errors due to TLS models, dlopen with RTLD_LOCAL and Mono, so any libstdc++ build of FiveM would be unable to have Mono work. libc++ does handle this properly.
  • Other distributions (non-Alpine) are not suited for distribution as a minimal root filesystem + ‘portable’ binary (not dependent on any system files/libraries), since they either use glibc (which depends on a hardcoded prefix), are too large, or similarly don’t ship dependencies we require (mono, v8, libc++/clang, libcurl working with OpenSSL/mbedTLS since nodejs does not build with libressl and musl does not support symbol versioning).
  • In addition, breakpad does not build with musl (only supports glibc and bionic), so we can’t do any server crash reporting, so Linux builds are useless for helping reporting any server issues. Also, performance profilers are markedly inferior to ETW on Windows, and gdb breaks with our musl setup and shows ‘no shared libraries loaded’ when clearly having shared libraries loaded. This has made Linux a horrible experience for server owners experiencing any uncommon issues, as we literally can’t get any data off of their issue reports.

If anyone here happens to have sufficient experience with dealing with portable Linux toolchains, can perhaps nudge the Alpine maintainers to mainline libc++ again (or update LLVM to 7.0, see a recent pull request by an Alpine community member), or otherwise knows how to fix this, help would be very appreciated.

It is recommended to move servers to Windows to maintain service continuity, and have the ability to upload dumps and other diagnostics due to the superior runtime instrumentation tooling existing on the Windows platform.

For now, we are investigating our options when it comes to reviving the Linux builds.


#2

Awwwwww fuck.


#3

Very sad day, really hope someone with sufficient knowledge can help as Linux is and always will be my primary OS for everything server related. Also good for keeping hosting multi-platorm :broken_heart:

I know it’s not the most important thing to the average user or GSP hosted server, but is there any way to add maybe some kind of bug bounty to this? I personally would be willing to contribute :moneybag:


#4

seconded! However, i doubt linux support will happen again, if at all.

well, at least that windows server i have has a purpose now.


#5

#9

FiveM RIP, obviously.

The largest number of servers is on Linux, abandoning support * nix - it means losing a lot of people, are you aware of?


#10

And you know this how?


#11

Actually wrong:

sh-4.4$ curl -sL http://runtime.fivem.net/servers/ | jq -r '.[].Data.server | select(startswith("FXS"))' | awk ' { print $(NF ) }' | sort | uniq -c | sort -n
      1 807-GIT-10/11/18_19:22:52
   1269 linux
   1735 win32

Not sure what’s with that one deviant server with a weird ‘git’ tag, though.

Before anyone asks ‘but this command ran on Linux, you hypocrites!’:

sh-4.4$ uname -a
MSYS_NT-10.0 DESKTOP-E2T5A1 2.11.1(0.329/5/3) 2018-09-10 14:19 x86_64 Msys

#12

I’m a proponent of Linux servers for personal use due to the fact that (I believe) Windows licenses are more expensive than all Linux licenses (if there are even costs), but I fully understand this decision.

This issue is totally out of your control and I hope that more alpine users will experience this issue, resulting in an eventual fix/addition to their product.

You guys have tried your best. I hope that the rest of the community sees this too.

:mascot: :heart:


#13

Ok, ~60/40, but I won’t take into account the servers that are running “for 1 day, play with friends” - I’m talking about popular servers that have the most players.


#14

Servers with >20 players:

sh-4.4$ curl -sL http://runtime.fivem.net/servers/ | jq -r '.[] | select(.Data.clients > 20) | .Data.server | select(startswith("FXS"))' | awk ' { print $(NF) }' | sort | uniq -c | sort -n
      1 807-GIT-10/11/18_19:22:52
    106 linux
    126 win32

#15

Ok, in our community (10 servers) - nobody using Windows (most popular servers in west Europe and Russia)


#16

there is no point in arguing about this, there is nothing that can be done to make linux work for now.


#17

This is very sad news but thank you for explaining the reasoning and thought process


#18

why? because they could not compile the server? This is not a reason, it is a confirmation of their own helplessness.


#19

It is.

And why do you think one paragraph of the main topic is, literally, as follows:


#20

My friend, if I had not quit developing for C ++ many years ago - I would have tried to help to the best of my ability, believe me


#21

Why call someone “helpless” when you can’t fix it yourself either. That’s easy talking now is it?


#22

They get paid for it, but you are not worried about a janitor who didn’t remove your garbage - you stop paying him. Is it logical? Is logical. It’s about the same situation, and don’t try to convince me - it’s a fact, “FiveM” - is a business, is a service.


#23

absolutely incorrect, FiveM is a project, and it’s free.