Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error in Transaction Runnable For Mitigate Desync NoSlow #1998

Closed
Axionize opened this issue Feb 5, 2025 · 1 comment
Closed

Error in Transaction Runnable For Mitigate Desync NoSlow #1998

Axionize opened this issue Feb 5, 2025 · 1 comment
Labels

Comments

@Axionize
Copy link
Contributor

Axionize commented Feb 5, 2025

Stack trace

[21:56:51] [Netty Epoll Server IO #0/INFO]: [GrimAC] [STDOUT] An error has occurred when running transactions for player: foa3
[21:56:51] [Netty Epoll Server IO #0/WARN]: Nag author(s): '[GrimAC]' of 'GrimAC v2.3.69' about their usage of System.out/err.print. Please use your plugin's logger instead (JavaPlugin#getLogger).
[21:56:51] [Netty Epoll Server IO #0/WARN]: java.lang.IllegalStateException: BlockReceiveGameEvent may only be triggered synchronously.
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:47)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.level.gameevent.vibrations.VibrationSystem$Listener.handleGameEvent(VibrationSystem.java:302)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.level.gameevent.GameEventDispatcher.lambda$post$0(GameEventDispatcher.java:52)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.level.gameevent.EuclideanGameEventListenerRegistry.visitInRangeListeners(EuclideanGameEventListenerRegistry.java:74)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.level.gameevent.GameEventDispatcher.post(GameEventDispatcher.java:64)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.server.level.ServerLevel.gameEvent(ServerLevel.java:1885)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.level.LevelAccessor.gameEvent(LevelAccessor.java:120)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.entity.Entity.gameEvent(Entity.java:1729)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.entity.Entity.gameEvent(Entity.java:1733)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at net.minecraft.world.entity.LivingEntity.stopUsingItem(LivingEntity.java:4165)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at org.bukkit.craftbukkit.entity.CraftLivingEntity.clearActiveItem(CraftLivingEntity.java:1062)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.player.GrimPlayer.resetBukkitItemUsage(GrimPlayer.java:864)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.events.packets.PacketEntityReplication.lambda$onPacketSend$12(PacketEntityReplication.java:270)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.utils.latency.LatencyUtils.handleNettySyncTransaction(LatencyUtils.java:87)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.player.GrimPlayer.addTransactionResponse(GrimPlayer.java:384)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.events.packets.PacketPingListener.onPacketReceive(PacketPingListener.java:62)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.shaded.com.github.retrooper.packetevents.event.PacketReceiveEvent.call(PacketReceiveEvent.java:44)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.shaded.com.github.retrooper.packetevents.event.EventManager.callEvent(EventManager.java:84)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.shaded.com.github.retrooper.packetevents.util.PacketEventsImplHelper.handleServerBoundPacket(PacketEventsImplHelper.java:101)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.shaded.io.github.retrooper.packetevents.injector.handlers.PacketEventsDecoder.read(PacketEventsDecoder.java:57)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.shaded.io.github.retrooper.packetevents.injector.handlers.PacketEventsDecoder.decode(PacketEventsDecoder.java:64)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at grimac-2.3.69-cme-fix-2.jar//ac.grim.grimac.shaded.io.github.retrooper.packetevents.injector.handlers.PacketEventsDecoder.decode(PacketEventsDecoder.java:41)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:202)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.flow.FlowControlHandler.channelRead(FlowControlHandler.java:164)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:454)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.handler.flush.FlushConsolidationHandler.channelRead(FlushConsolidationHandler.java:152)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
[21:56:51] [Netty Epoll Server IO #0/WARN]: 	at java.base/java.lang.Thread.run(Thread.java:1575)
  player.latencyUtils.addRealTimeTask(player.lastTransactionSent.get() + 1, () -> {
                    if (slot.getSlot() - 36 == player.packetStateData.lastSlotSelected) {
                        player.packetStateData.setSlowedByUsingItem(false);
                        if (player.isMitigateDesyncNoSlow()) {
                            player.resetBukkitItemUsage();
                        }
                    }
                });

you're calling player.resetBukkitItemUsage() in whatever thread happens to process the players transactions

    public void resetBukkitItemUsage() {
        if (resetActiveBukkitItem != null && this.isUsingBukkitItem()) {
            this.bukkitPlayer.updateInventory();
            resetActiveBukkitItem.accept(this.bukkitPlayer);
        }
    }

Your consumer doesn't seem to have anything to make sure its running on the right thread and neither does this method

@ManInMyVan perhaps I'm missing something but it seems obvious to me there's an issue here. You're calling bukkit methods not on the main bukkit thread (or appropiate thread in the case of Folia) but on the netty thread handling processing the transaction runnables for the player. I suggest a simple runInThread() method like the ChannelHelper one we have for netty that wraps around runTaskSync(0L, runnable); on bukkit servers and does the appropiate handling for Folia otherwise.

How to replicate it if known

No response

Grim version

2.3.71 (with the following merged/cherry picked: #1984)

Server version

Folia 1.21.1

Plugins

Unknown

@Axionize Axionize added the error label Feb 5, 2025
@Axionize
Copy link
Contributor Author

Axionize commented Feb 6, 2025

Fixed
45da02e
68a04d0

@Axionize Axionize closed this as completed Feb 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant