PaperMC / Paper

The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
https://papermc.io/
Other
9.37k stars 2.19k forks source link

PacketPlayInWindowClick with wrong paramaters lag server #10888

Closed MrXiaoM closed 2 weeks ago

MrXiaoM commented 2 weeks ago

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

electronicboy commented 2 weeks ago

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

MrXiaoM commented 2 weeks ago

Fine.