You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Install Docker for Windows and start a mysql:5.7 image. (See docker-run-mysql.sh for a sample command line.)
Run the tests (dotnet test tests\SideBySide\SideBySide.csproj). dotnet.exe crashes.
Analyzing the crash dump in WinDbg reveals that it's a stack overflow exception:
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00007ff894cf5323 (System_Net_Sockets!System.Net.Sockets.Socket.Receive(Byte[], Int32, Int32, System.Net.Sockets.SocketFlags, System.Net.Sockets.SocketError ByRef)$##6000191+0x0000000000000033)
ExceptionCode: c00000fd (Stack overflow)
ExceptionFlags: 00000001
NumberParameters: 2
Parameter[0]: 0000000000000001
Parameter[1]: 00000039d5b43fb8
PROCESS_NAME: dotnet.exe
ERROR_CODE: (NTSTATUS) 0xc00000fd - A new guard page for the stack cannot be created.
EXCEPTION_CODE: (NTSTATUS) 0xc00000fd - A new guard page for the stack cannot be created.
The failing test case can be narrowed down to one test method: dotnet test tests\SideBySide\SideBySide.csproj --filter="FullyQualifiedName~InsertLargeBlobSync"
Perhaps something about running the docker image under Windows is throttling network packets so that only a few bytes arrive at a time, yet there's always some more data to read, so the continuations run synchronously?
The recursive continuations may need to be rewritten as a loop.
This was similar to #239 but occurred in InsertLargeBlobAsync when reading over a slow connection. The 'ContinueWith' code chained too many continuations together recursively. The compiler-generated 'await' state machine avoids this problem.
Install Docker for Windows and start a
mysql:5.7
image. (See docker-run-mysql.sh for a sample command line.)Run the tests (
dotnet test tests\SideBySide\SideBySide.csproj
).dotnet.exe
crashes.Analyzing the crash dump in WinDbg reveals that it's a stack overflow exception:
The failing test case can be narrowed down to one test method:
dotnet test tests\SideBySide\SideBySide.csproj --filter="FullyQualifiedName~InsertLargeBlobSync"
Perhaps something about running the docker image under Windows is throttling network packets so that only a few bytes arrive at a time, yet there's always some more data to read, so the continuations run synchronously?
The recursive continuations may need to be rewritten as a loop.
Full crash call stack:
The text was updated successfully, but these errors were encountered: