Repository navigation
System.ArgumentException on Ping SendPacket #53
Description
Application: SummitCommunicationService.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentException
at System.Collections.Hashtable.Insert(System.Object, System.Object, Boolean)
at System.Collections.Hashtable.Add(System.Object, System.Object)
at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(System.String, System.Object)
at System.Collections.Specialized.NameValueCollection.Add(System.String, System.String)
at System.Net.HttpWebRequest.SetSpecialHeaders(System.String, System.String)
at System.Net.HttpWebRequest.set ContentType(System.String)
at Quobject.EngineIoClientDotNet.Client.Transports.PollingXHR+XHRRequest.Create()
at Quobject.EngineIoClientDotNet.Client.Transports.PollingXHR.DoWrite(Byte[], System.Action)
at Quobject.EngineIoClientDotNet.Client.Transports.Polling+SendEncodeCallback.Call(System.Object)
at Quobject.EngineIoClientDotNet.Parser.Packet.EncodePayload(Quobject.EngineIoClientDotNet.Parser.Packet[], Quobject.EngineIoClientDotNet.Parser.IEncodeCallback)
at Quobject.EngineIoClientDotNet.Client.Transports.Polling.Write(System.Collections.Immutable.ImmutableList1(Quobject.EngineIoClientDotNet.Parser.Packet)) at Quobject.EngineIoClientDotNet.Client.Transport.Send(System.Collections.Immutable.ImmutableList1(Quobject.EngineIoClientDotNet.Parser.Packet))
at Quobject.EngineIoClientDotNet.Client.Socket.Flush()
at Quobject.EngineIoClientDotNet.Client.Socket.SendPacket(Quobject.EngineIoClientDotNet.Parser.Packet, System.Action)
at Quobject.EngineIoClientDotNet.Client.Socket.(SetPing)b 65 0()
at Quobject.EngineIoClientDotNet.Thread.EasyTimer+()c DisplayClass2 0.(SetTimeout)b 0()
at System.Threading.Tasks.AwaitTaskContinuation.InvokeAction(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.Tasks.AwaitTaskContinuation.RunCallback(System.Threading.ContextCallback, System.Object, System.Threading.Tasks.Task ByRef)
at System.Threading.Tasks.AwaitTaskContinuation+()c.(ThrowAsyncIfNecessary)b 18 0(System.Object)
at System.Threading.QueueUserWorkItemCallback.WaitCallback Context(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading. ThreadPoolWaitCallback.PerformWaitCallback()
Activity
hideflolife commentedon Feb 22, 2018
Sorry, for the multiple edits - was losing characters.
hideflolife commentedon Feb 27, 2018
I'm investigating this now but it may have to do with the PollingXHR.Create's Task.Run never finishing until it runs out of threads and then finally craps out due to exceptions. I think this is due to if incoming messages (data) continuously calling OnData, which then recurses back into a new Poll and a new Task.Run.
I'm thinking that Polling._onData should not initiate another Poll, but instead just finish with parsing.
hideflolife commentedon Mar 1, 2018
To recreate this issue, use PollingXHR only and then send socket information from the server every 500ms-1000ms indefinitely. The client will continue to recurse into a new Poll via the _onData function - not allowing the initial PollingXHR.Create's Task.Run to complete. Eventually, due to stack overflow/memory issues, Create's will fail into the general exception try/catch.