OpenParsec / openparsec

GNU General Public License v2.0
51 stars 8 forks source link

Master Server Segfault #98

Open CrazySpence opened 2 years ago

CrazySpence commented 2 years ago

When the 64bit code got merged into main I did a recompile of the galaxy cluster, all the regular servers started but the Master Server segfaults

Fortunately i saved the old binary so i can keep the Master up for the time being but when I use the new code this is what GDB shows:

Program received signal SIGSEGV, Segmentation fault. 0x004262aa in MasterServerItem::GetMTime (this=0x0) at ../../../../src/parsec_server/MasterServerItem.cpp:203 203 return _MTime; (gdb) bt

0 0x004262aa in MasterServerItem::GetMTime (this=0x0) at ../../../../src/parsec_server/MasterServerItem.cpp:203

1 0x004255a3 in MasterServer::RemoveStaleEntries (this=0x4abcbc) at ../../../../src/parsec_server/MasterServer.cpp:106

2 0x0043620c in E_GameServer::ServerFrame (this=0x4abcc0 <E_GameServer::GetGameServer()::_TheGameServer>) at ../../../../src/parsec_server/e_gameserver.cpp:779

3 0x0043629a in E_GameServer::MainLoop (this=0x4abcc0 <E_GameServer::GetGameServer()::_TheGameServer>) at ../../../../src/parsec_server/e_gameserver.cpp:809

4 0x0044b2b8 in main (argc=2, argv=0xbffff164) at ../../../../src/parsec_server/sv_main.cpp:84

It looks like it is trying to check stale expiry on items before they even exist tbh, like right out of starting the server it ends up in this code which doesn't seem quite right.

CrazySpence commented 2 years ago

Something that may be worth noting on this issue

The current server that runs the Master + enyo and the other public servers is 32bit

I did a ./parsec_server -m on my 64bit docker image and theres no crash. This could be a 32bit arch issue