Closed majek closed 3 years ago
Thanks for fixing this! I will try and pull this in today.
Quoting @hbhasker from another thread in which this problem was still seen:
This is most likely due to an implementation issue in netstack.go. netstack.go caches a readView and today the tcp/endpoint.go is not aware of how much data is held in the readView but not yet delivered to the user. This leads to a disconnect and can sometimes result in a situation where the read() was served out of the readView.
This issue is stale because it has been open 90 days with no activity. Remove the stale label or comment or this will be closed in 30 days.
This issue is stale because it has been open 90 days with no activity. Remove the stale label or comment or this will be closed in 30 days.
Sounds related to https://github.com/google/gvisor/issues/1509#issuecomment-694852634.
I am going to mark this closed for now as addressing the readView issue is separate from what this bug asked for. If anything the readView prevents certain updates from going rather than cause generation of more updates. Getting rid of readView will also require a reasonable amount of work in netstack.go to move TCP specific parts out into tcp/endpoint.go etc. We can open a separate issue for that when we decide to fix it.
Series of small read()'s should not generate stream of tiny ACK's.