PaperMC/Paper

PacketPlayInWindowClick with wrong paramaters lag server

MrXiaoM opened this issue · 2 comments

Stack trace

[23:30:24] [Server thread/ERROR]: Failed to handle packet net.minecraft.network.protocol.game.PacketPlayInWindowClick@2b8c0e29, suppressing error
net.minecraft.ReportedException: Container click
	at net.minecraft.world.inventory.AbstractContainerMenu.clicked(AbstractContainerMenu.java:398) ~[?:?]
	at net.minecraft.server.network.ServerGamePacketListenerImpl.handleContainerClick(ServerGamePacketListenerImpl.java:3395) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundContainerClickPacket.handle(ServerboundContainerClickPacket.java:58) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundContainerClickPacket.handle(ServerboundContainerClickPacket.java:23) ~[?:?]
	at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:51) ~[?:?]
	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
	at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
	at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1369) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.server.MinecraftServer.wrapRunnable(MinecraftServer.java:197) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
	at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1346) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1339) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.util.thread.BlockableEventLoop.runAllTasks(BlockableEventLoop.java:114) ~[?:?]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1455) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1195) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:325) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: java.lang.ArrayIndexOutOfBoundsException

I know it looks like be cut off. But it is the FULL stacktrace that spams on my server. I don't know why, too.

Plugin and Datapack List

Not necessary.

Actions to reproduce (if known)

I open this issue because I am tried to apply patches again.

Some server crasher from cheat client I guess send a wrong PacketPlayInWindowClick. Then server console log this stacktrace.
The server received this package all along at that time. It caused log spam and the mspt increased to even 1000.

The logs above is everything. I don't know where throw a ArrayIndexOutOfBoundsException exactly, too.

Paper version

It is my self-modified Purpur, based on Purpur 68862729. I think it is the latest Paper because it's been a long time since there was an update in the branch ver/1.19.4. And I haven't found any patches about AbstractContainerMenu.java fix this problem.

[01:41:34 INFO]: Current: git-Purpur-"7a392eb" (MC: 1.19.4)*

Other

Here is my patch if you want.

0315-fix-PacketInWindowClickPacket-from-cheater-cause-ind.patch

This was patched somewhere in 1.20.x paper, we do not supported outdated versions, or forks

Fine.