-
Notifications
You must be signed in to change notification settings - Fork 30
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
go: client on Linux get EOF on read #55
Comments
With #57 we see a bit more:
So basically, half way through receiving 64872B from the host the read gets an EOF. The test run was donw with 8192B buffers but we see similar behaviour with the default 16kB buffers, but there it is more likely to be the last batch which fails. The individual batch failing always seems to fail with 0B read. |
I get similar error when using a Win 10 Pro (Fall Creators Update) connecting to a Win 10 Pro host where the server runs:
|
With the C implementation in
So basically, the server echo's data received back until the The client does:
ie after the it receives the echo calls With the server inside a Linux VM and the client on the Windows host, this works fine.
Server output (Linux):
Running the server on Windows and the client on Linux we see:
and on the server (windows):
Note that sometimes the Linux client does get the |
I also tried to put a |
I also tried turning the |
When running the
sock_stress
tests with the server on the host (sock_stress -v 1 -s hvsock
) and the client in the Linux VMsock_stress -v 1 -c hvsock://parent
the client frequently gets errors on receive, like thisThe server does not report any errors and the test works fine in the other direction.
It seems timing sensitive as some connections work fine, even with a similar amount of data transmitted.
The server (on the host) is basically performing:
The client in one go-routine is sending random data and when all data is sent calls (
CloseWrite()
). In another go routine is it repeatably callingio.ReadAll()
of fixed sized chunks (min of buffer or data left to read). It's theio.ReadAll()
which sees the EOF before all data is read.The text was updated successfully, but these errors were encountered: