Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System.ArgumentException on Ping SendPacket #53

Open
hideflolife opened this issue Feb 22, 2018 · 3 comments
Open

System.ArgumentException on Ping SendPacket #53

hideflolife opened this issue Feb 22, 2018 · 3 comments

Comments

@hideflolife
Copy link

hideflolife commented Feb 22, 2018

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()

@hideflolife
Copy link
Author

Sorry, for the multiple edits - was losing characters.

@hideflolife
Copy link
Author

hideflolife commented 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
Copy link
Author

hideflolife commented 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant