Jump to content

MeatShield

Are Linux Dedicated Servers Currently Broken?

Recommended Posts

I've been trying to setup a dedicated server on Linux (Ubuntu server 18.04.3) and I can't quite get it working. I have it setup on a Windows VM so I know I have the port forwarding sorted out. With windows everything works but when I run it under Linux I can see the server listed but when I try to join it hangs and times out.

I know this has been posted before but what I am wondering is this affecting every Linux server, or are there some that have it working and can we try to figure out why.

 

When I run it under Linux, I see that the main process ShooterGameServer and one of it's threads are each pegging a CPU at 100%

I ran strace on the main pid and it is stuck in a loop.

First it calls sched_getaffinity(), then it calls openat() for each of the processors, then fstats() on the returned fp, reads the value and closes the fp.

sched_getaffinity(0, 128, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) = 8
openat(AT_FDCWD, "/sys/devices/system/cpu/cpu0/topology/core_id", O_RDONLY) = 25
fstat(25, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
read(25, "0\n", 4096)                   = 2
close(25)                               = 0
openat(AT_FDCWD, "/sys/devices/system/cpu/cpu1/topology/core_id", O_RDONLY) = 25
fstat(25, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
read(25, "1\n", 4096)                   = 2
close(25)                               = 0
openat(AT_FDCWD, "/sys/devices/system/cpu/cpu2/topology/core_id", O_RDONLY) = 25
fstat(25, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
read(25, "2\n", 4096)                   = 2
close(25)                               = 0
....
openat(AT_FDCWD, "/sys/devices/system/cpu/cpu14/topology/core_id", O_RDONLY) = 25
fstat(25, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
read(25, "6\n", 4096)                   = 2
close(25)                               = 0
openat(AT_FDCWD, "/sys/devices/system/cpu/cpu15/topology/core_id", O_RDONLY) = 25
fstat(25, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
read(25, "7\n", 4096)                   = 2
close(25)                               = 0
futex(0x97054f4, FUTEX_WAKE_PRIVATE, 2147483647) = 1
futex(0x97054a0, FUTEX_WAKE_PRIVATE, 1) = 1

 

The child thread is just spinning on a futex.

...
futex(0xab32c080, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
futex(0xab32bfe0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0xab32c084, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
futex(0xab32bfe0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0xab32c080, FUTEX_WAIT_PRIVATE, 0, NULL) = 0
futex(0xab32bfe0, FUTEX_WAKE_PRIVATE, 1) = 0
...

and occasionally fails with

futex(0x7f5db2db5178, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x7f5db2db5178, FUTEX_WAKE_PRIVATE, 1) = 0

but goes back to the futex spinning.

 

 

Does anyone have this working under Linux currently?

 

Thanks!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×