Page 1 of 1

[0.11.16] unnecessary 10 second hang when dropping players

Posted: Sun Feb 22, 2015 3:01 pm
by thuejk
While hosting a multiplayer game with a friend, his game kept crashing. This bug report is not about those crashes, but about the 10 second delay after my friend has pressed quit on the crash screen, and until he is dropped and the game continues.

Whenever he crashed, my client would very quickly say "player XXX" dropped ingame, but it would then still hang for ~10 seconds after my friend presses "quit", while the bash command line output
12949.753379 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(100/900).
12949.753430 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(100/900).
12949.753442 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(100/900).
12950.820922 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(200/900).
12950.820961 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(200/900).
12950.820984 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(200/900).
12951.938477 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(300/900).
12951.938516 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(300/900).
12951.938529 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(300/900).
12953.022737 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(400/900).
12953.022774 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(400/900).
12953.022806 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(400/900).
12954.090383 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(500/900).
12954.090429 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(500/900).
12954.090442 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(500/900).
12955.174740 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(600/900).
12955.174777 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(600/900).
12955.174788 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(600/900).
12956.225585 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(700/900).
12956.225709 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(700/900).
12956.225733 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(700/900).
12957.309738 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(800/900).
12957.309775 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(800/900).
12957.309786 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(800/900).
12958.444059 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414026) from peer(11). Drop detection state(900/900).
12958.444098 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414027) from peer(11). Drop detection state(900/900).
12958.444113 Info Synchronizer.cpp:456: NetworkTick(414030) Requesting heartbeat for networkTick(414028) from peer(11). Drop detection state(900/900).
12958.460887 Info Synchronizer.cpp:566: NetworkTick(414030) peer(11) peerHeartbeatsEmpty(true) is not responding, dropping.
So even though one part of the game knows that he has been dropped (because my client said so), the game still hangs while timing out the heartbeat. This seems silly. In 0.11.14 the drop on crash didn't have this problem.

Re: [0.11.16] unnecessary 10 second hang when dropping players

Posted: Sat Feb 28, 2015 8:17 am
by MF-
Could it be wrong error text?
What if the real message was "Player connection lost"?

In that case it would be nice if the game waited a couple of seconds
whether the player manages to regain connection or not.

Re: [0.11.16] unnecessary 10 second hang when dropping players

Posted: Mon Mar 02, 2015 8:59 am
by cube
Hi, this should be fixed in 0.17.0 by the slpwnd's refactorings of the multiplayer code. Additionally there is now a progress bar while the game is waiting to drop someone who is not responding.

Re: [0.11.16] unnecessary 10 second hang when dropping players

Posted: Mon Mar 02, 2015 11:46 am
by thuejk
Thanks!