microsoft / vs-streamjsonrpc

The StreamJsonRpc library offers JSON-RPC 2.0 over any .NET Stream, WebSocket, or Pipe. With bonus support for request cancellation, client proxy generation, and more.
Other
737 stars 149 forks source link

Unstable test: AspNetCoreWebSocket_DisposeRpcThenCloseSocket #128

Open AArnott opened 6 years ago

AArnott commented 6 years ago

From this CI build:

[xUnit.net 00:00:02.6542180]     WebSocketMessageHandlerTests.AspNetCoreWebSocket_DisposeRpcThenCloseSocket [FAIL]
Failed   WebSocketMessageHandlerTests.AspNetCoreWebSocket_DisposeRpcThenCloseSocket
Error Message:
 System.ObjectDisposedException : Cannot access a disposed object.
Object name: 'Microsoft.AspNetCore.TestHost.TestWebSocket'.
Stack Trace:
   at Microsoft.AspNetCore.TestHost.TestWebSocket.ReceiverSenderBuffer.ThrowNoReceive()
   at Microsoft.AspNetCore.TestHost.TestWebSocket.ReceiverSenderBuffer.<ReceiveAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.TestHost.TestWebSocket.<ReceiveAsync>d__20.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.TestHost.TestWebSocket.<CloseAsync>d__16.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at WebSocketMessageHandlerTests.<AspNetCoreWebSocket_DisposeRpcThenCloseSocket>d__21.MoveNext() in /Users/travis/build/Microsoft/vs-streamjsonrpc/src/StreamJsonRpc.Tests/WebSocketMessageHandlerTests.cs:line 185
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
AArnott commented 6 years ago

And again

AArnott commented 4 years ago

Not repro in a long time.

AArnott commented 4 years ago

It just repro'd.

System.ObjectDisposedException : Cannot access a disposed object. Object name: 'Microsoft.AspNetCore.TestHost.TestWebSocket'. Stack trace at Microsoft.AspNetCore.TestHost.TestWebSocket+ReceiverSenderBuffer.ThrowNoReceive () [0x00017] in <77a260297de442849a96a0f2080cd8d7>:0 at Microsoft.AspNetCore.TestHost.TestWebSocket+ReceiverSenderBuffer.ReceiveAsync (System.Threading.CancellationToken cancellationToken) [0x000b8] in <77a260297de442849a96a0f2080cd8d7>:0 at Microsoft.AspNetCore.TestHost.TestWebSocket.ReceiveAsync (System.ArraySegment`1[T] buffer, System.Threading.CancellationToken cancellationToken) [0x0009c] in <77a260297de442849a96a0f2080cd8d7>:0 at Microsoft.AspNetCore.TestHost.TestWebSocket.CloseAsync (System.Net.WebSockets.WebSocketCloseStatus closeStatus, System.String statusDescription, System.Threading.CancellationToken cancellationToken) [0x0011e] in <77a260297de442849a96a0f2080cd8d7>:0 at WebSocketMessageHandlerTests.AspNetCoreWebSocket_DisposeRpcThenCloseSocket () [0x00188] in :0