Re: [0.14.8] [Twinsen/cube] Downloading map hangs at 100%
Posted: Thu Dec 01, 2016 1:05 am
This is a long-shot, but I have seen these symptoms before.
What was occurring in my instance was an out of memory error in the network adapters internal TCP stack caused by one dropped packet at a high traffic time. Basically when a packet was dropped the network adapter stored all the incoming packets until the resend arrived. In extremely rare circumstances the number of "waiting" packets filled up all allocated memory of the network card, so the card "closed" the TCP connection. I say "closed" because the close operation was not reported to the OS correctly, giving interesting side-effects until the OS decided to close the connection in the kernel. I can see that if you are running a cheap 1Gb network card that the old firmware from a 10/100 card could be in use, one that assumes a certain "range" of transfer speeds and packet drops.
Anyway, some possible solutions are:
1) Update your firmware
2) Disable "TCP offload" for your network card
From Factorio's point of view, I don't think there is any way to solve the issue. Trying to detect a closed connection did not work in our case because the OS thought it was open. We had to watch the packet sniffer on the router to see that our packets were not even reaching the wire when we knew there should be some form of activity.
What was occurring in my instance was an out of memory error in the network adapters internal TCP stack caused by one dropped packet at a high traffic time. Basically when a packet was dropped the network adapter stored all the incoming packets until the resend arrived. In extremely rare circumstances the number of "waiting" packets filled up all allocated memory of the network card, so the card "closed" the TCP connection. I say "closed" because the close operation was not reported to the OS correctly, giving interesting side-effects until the OS decided to close the connection in the kernel. I can see that if you are running a cheap 1Gb network card that the old firmware from a 10/100 card could be in use, one that assumes a certain "range" of transfer speeds and packet drops.
Anyway, some possible solutions are:
1) Update your firmware
2) Disable "TCP offload" for your network card
From Factorio's point of view, I don't think there is any way to solve the issue. Trying to detect a closed connection did not work in our case because the OS thought it was open. We had to watch the packet sniffer on the router to see that our packets were not even reaching the wire when we knew there should be some form of activity.