I have strange error crashing my server. Server works fine fo awile(5-15 mins) then crashes randomly:
(I am using Server v3.5.0.0, reproduced both on release and debug servers)
Error log:
- Code: Select all
System.NullReferenceException occurred
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=Player.IO Development Server
StackTrace:
at PlayerIO.ServerCore.SocketLibrary.MessageSerializer.serializeToBytes(Message m, ByteWriter writer)
at PlayerIO.ServerCore.SocketLibrary.MessagingConnection.Send(Message message)
at PlayerIO.ServerCore.GameManager.ClientConnection.<>c__DisplayClass13.<Send>b__12()
at PlayerIO.ServerCore.GameManager.ExternalCodeManager.<>c__DisplayClass7.<PauseToRunOurCode>b__6()
at PlayerIO.ServerCore.GameManager.ExternalCodeManager.PauseToRunOurCode[T](Func`1 ourCode)
at PlayerIO.ServerCore.GameManager.ExternalCodeManager.PauseToRunOurCode(Action ourCode)
at PlayerIO.ServerCore.GameManager.ClientConnection.Send(Message message)
at PlayerIO.GameLibrary.BasePlayer.Send(Message message)
at PlayerIO.ServerCore.GameManager.GameHost.Broadcast(Message message, BasePlayer[] players, Int32 playerCount)
at PlayerIO.GameLibrary.Game`1.Broadcast(Message message)
at RoomLogics.GameRoom.BroadcastChangeStack() in C:\!intelliSpace\y8Snakes\server\RoomLogics\Src\Core\GameRoom.cs:line 72
at RoomLogics.GameRoom.<GameStarted>b__17_0() in C:\!intelliSpace\y8Snakes\server\RoomLogics\Src\Core\GameRoom.cs:line 60
at PlayerIO.ServerCore.GameManager.GameHost.runEvent_(GameEvent evt, BasePlayer player, Message message, Action action)
at PlayerIO.ServerCore.GameManager.GameHost.<>c__DisplayClass3c.<RunEvent>b__3a()
at PlayerIO.ServerCore.GameManager.ExternalCodeManager.RunExternalCode[T](UInt32 gameId, Func`1 externalCode, Nullable`1 maxNaturalTimeOverride, Int64& ticks)
at PlayerIO.ServerCore.GameManager.GameHost.RunEvent(GameEvent evt, BasePlayer player, Message message, Action action)
My line 60:
- Code: Select all
AddTimer(delegate { BroadcastChangeStack(); }, 100);
line 72:
- Code: Select all
Broadcast(stackMessage);
stackMessage is definetly not null. (I check it in try catch, its non null and had Count = 32
What I am doing is adding all player actions into stackMessage, then sending it to all players every 100 ms. (to reduce bandwidth.) Creating new empty message in place of old one. (stackMessage never set to null in code).
Any ideas what problem it may be? What could I do to investigate it?
Thank you for your time.