Assertion fail in NetReliableSenderChannel.cs during 20 hour performance test

99 views
Skip to first unread message

Ken Florentino

unread,
Jul 14, 2017, 1:21:03 PM7/14/17
to lidgren-network-gen3
Hi everyone,

During the course of a performance test for our multi-player game we encountered the error below.

We ran a 20 hour performance test with 300 AI game clients connecting to 100 game servers, playing a 3 minute game and then disconnecting. Both the clients and game servers are situated in AWS EC2 Windows 2012 R2 instances.

The 100 game servers are all running on a single EC2 instance, while the headless clients are running on separate EC2 instances.

4 of the 100 game servers crashed with the following error:

Exception of type 'Lidgren.Network.NetException' was thrown.
   at Lidgren.Network.NetException.Assert(Boolean isOk) in d:\dominari\lidgren-network-gen3-master\Lidgren.Network\NetException.cs:line 72
   at Lidgren.Network.NetReliableSenderChannel.GetAllowedSends() in d:\dominari\lidgren-network-gen3-master\Lidgren.Network\NetReliableSenderChannel.cs:line 46
   at Lidgren.Network.NetReliableSenderChannel.Enqueue(NetOutgoingMessage message) in d:\dominari\lidgren-network-gen3-master\Lidgren.Network\NetReliableSenderChannel.cs:line 65
   at Lidgren.Network.NetConnection.EnqueueMessage(NetOutgoingMessage msg, NetDeliveryMethod method, Int32 sequenceChannel) in d:\dominari\lidgren-network-gen3-master\Lidgren.Network\NetConnection.cs:line 365
   at Lidgren.Network.NetPeer.SendMessage(NetOutgoingMessage msg, NetConnection recipient, NetDeliveryMethod method, Int32 sequenceChannel) in d:\dominari\lidgren-network-gen3-master\Lidgren.Network\NetPeer.Send.cs:line 59
   at Lidgren.Network.NetPeer.SendMessage(NetOutgoingMessage msg, NetConnection recipient, NetDeliveryMethod method) in d:\dominari\lidgren-network-gen3-master\Lidgren.Network\NetPeer.Send.cs:line 22
   

We were running under debug mode.

Question one, is this a serious issue? If not, is it safe for us to comment out the assert without any side effects? 

Thanks,
Ken

Michael Lidgren

unread,
Jul 16, 2017, 10:43:55 AM7/16/17
to lidgren-ne...@googlegroups.com
This seems like a concurrency issue; the networking thread might be modifying m_windowSize or m_windowStart while we're querying it. It's a non-consequential callstack branch tho; it just determines if Queued or Sent is returned to the application. I would modify the code to return 0 when "retval" falls out of bounds - which will only happen when called from non-networking thread.

--michael

--
You received this message because you are subscribed to the Google Groups "lidgren-network-gen3" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lidgren-network-gen3+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages