mojira.dev
MC-823

Packets generated by third parties can cause heavy lag

Basically, certain poorly designed third party clients can cause heavy lag in multiplayer.

Minecraft 1.3.1 and prior did not handle this very well at all. Once a third party client did this, the server would go unresponsive and eventually crash. But in 1.4, the CPU goes into very high utilization and recovers, usually within two minutes.

During the recovery time, there is very heavy lag noticed by all the players still connected.

So a lot of progress has been made to improve the situation since 1.3.1. I'm sure it's not a trivial task to make it even better, but this lag is highly disruptive. Of course, adding a whitelist would mitigate it greatly, some servers opt to go without a whitelist.

Here is an example from the server log of the kind of activity that causes this situation.

2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [WARNING] KARLOX_11 was kicked for floating too long!
2012-10-26 17:08:12 [INFO] KARLOX_11 lost connection: disconnect.endOfStream

Linked issues

Comments 8

In another incident, a player claimed:

2012-10-29 09:01:37 [INFO] <##REDACTED##> ok i used fly set 15000 now im at 3048343 and z is 42568
2012-10-29 09:01:38 [INFO] <##REDACTED##> :D

Shortly after that, the server went unresponsive. Apparently his third party client could overpower the server this way. I checked the region files, and region r.5953.83.mca was never generated (thankfully).

Is this still a concern in the current Minecraft version? If so, please update the affected versions in order to best aid Mojang ensuring bugs are still valid in the latest releases/pre-releases.

This is still very much a concern in 1.4.5. Lag generated by these players is very disruptive. I believe the players who generate these packets are using a combination of both fly and speed hacks. Many players can "tune" their clients to avoid getting kicked. But others intentionally try to generate packets that the server can't handle specifically to create a denial of service attack.

Ok, thanks for the update.

Is this still a concern in the current Minecraft version? If so, please update the affected versions in order to best aid Mojang ensuring bugs are still valid in the latest releases/pre-releases.

Yes, in 1.5 as well as the snapshot (13w11a), the server seems even more susceptible to this problem.

Not sure if it's related, but right after someone got kicked for flying, the server wouldn't take a /stop command. After ^C, it finally stopped, then spit out a bunch of ConcurrentModification exceptions on the console. I couldn't capture them in time to include them here. They were not logged, must displayed on the console.

Is this still a concern in the current Minecraft version 1.6.4 / Launcher version 1.2.5 ? If so, please update the affected versions in order to best aid Mojang ensuring bugs are still valid in the latest releases/pre-releases.

Anthony Martin

(Unassigned)

Unconfirmed

multiplayer, protocol, server

Minecraft 1.4.1, Minecraft 1.4.5, Minecraft 1.5

Retrieved