Carpet

Carpet

2M Downloads

Leaving the area near an update-suppressed trapped chest after opening it crashes the game.

James103 opened this issue ยท 3 comments

commented

As of Carpet Mod 1.4.52 with #888 applied and Minecraft 1.17.1, when you do the following:

  1. /execute in the end run tp @s 400000 0 0
  2. /carpet fillUpdates false
  3. /carpet updateSuppressionCrashFix true
  4. /fill ~-80 0 ~-80 ~80 0 ~80 sea_lantern
  5. /fill ~-80 1 ~-80 ~80 1 ~80 powered_rail[powered=true]
  6. /setblock 400000 0 0 repeating_command_block{Command:"fill ~-80 1 ~-80 ~80 1 ~80 powered_rail[powered=true] replace powered_rail"}
  7. Replace one of the powered rails with a trapped chest.
  8. Open the trapped chest.
  9. Leave the area where the trapped chest is, e.g. /tp ~ ~20 ~, /execute in overworld run tp ~ ~ ~, /kill, or "Save and Quit to Title".

Then, the game will crash as follows:

Crash on /kill
carpetextra.helpers.ThrowableSuppression: Update suppression
	at net.minecraft.world.World.handler$bli000$checkUpdateSuppression(World:5063)
	at net.minecraft.world.World.updateNeighbor(World:358)
	at net.minecraft.world.World.updateNeighborsAlways(World:320)
	at net.minecraft.block.entity.TrappedChestBlockEntity.onInvOpenOrClose(TrappedChestBlockEntity:18)
	at net.minecraft.class_2595$1.onViewerCountUpdate(class_2595.java:44)
	at net.minecraft.block.entity.ViewerCountManager.closeContainer(ViewerCountManager:39)
	at net.minecraft.block.entity.ChestBlockEntity.onClose(ChestBlockEntity:140)
	at net.minecraft.screen.GenericContainerScreenHandler.close(GenericContainerScreenHandler:109)
	at net.minecraft.entity.player.PlayerEntity.remove(PlayerEntity:1393)
	at net.minecraft.entity.LivingEntity.updatePostDeath(LivingEntity:573)
	at net.minecraft.entity.LivingEntity.baseTick(LivingEntity:413)
	at net.minecraft.entity.Entity.tick(Entity:444)
	at net.minecraft.entity.LivingEntity.tick(LivingEntity:2308)
	at net.minecraft.entity.player.PlayerEntity.tick(PlayerEntity:274)
	at net.minecraft.server.network.ServerPlayerEntity.redirect$cei000$fixUpdateSuppressionCrashPlayerTick(ServerPlayerEntity:6207)
	at net.minecraft.server.network.ServerPlayerEntity.playerTick(ServerPlayerEntity:466)
	at net.minecraft.server.network.ServerPlayNetworkHandler.tick(ServerPlayNetworkHandler:212)
	at net.minecraft.network.ClientConnection.tick(ClientConnection:238)
	at net.minecraft.server.ServerNetworkIo.tick(ServerNetworkIo:183)
	at net.minecraft.server.MinecraftServer.tickWorlds(MinecraftServer:902)
	at net.minecraft.server.MinecraftServer.tick(MinecraftServer:831)
	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer:96)
	at net.minecraft.server.MinecraftServer.handler$bnh000$modifiedRunLoop(MinecraftServer:5890)
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer:676)
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer:270)
	at java.lang.Thread.run(Thread.java:831)
Crash on walking away
carpetextra.helpers.ThrowableSuppression: Update suppression
	at net.minecraft.world.World.handler$bli000$checkUpdateSuppression(World:5063)
	at net.minecraft.world.World.updateNeighbor(World:358)
	at net.minecraft.world.World.updateNeighborsAlways(World:321)
	at net.minecraft.block.entity.TrappedChestBlockEntity.onInvOpenOrClose(TrappedChestBlockEntity:18)
	at net.minecraft.class_2595$1.onViewerCountUpdate(class_2595.java:44)
	at net.minecraft.block.entity.ViewerCountManager.closeContainer(ViewerCountManager:39)
	at net.minecraft.block.entity.ChestBlockEntity.onClose(ChestBlockEntity:140)
	at net.minecraft.screen.GenericContainerScreenHandler.close(GenericContainerScreenHandler:109)
	at net.minecraft.server.network.ServerPlayerEntity.closeScreenHandler(ServerPlayerEntity:1055)
	at net.minecraft.server.network.ServerPlayerEntity.closeHandledScreen(ServerPlayerEntity:1051)
	at net.minecraft.entity.player.PlayerEntity.tick(PlayerEntity:278)
	at net.minecraft.server.network.ServerPlayerEntity.redirect$cei000$fixUpdateSuppressionCrashPlayerTick(ServerPlayerEntity:6207)
	at net.minecraft.server.network.ServerPlayerEntity.playerTick(ServerPlayerEntity:466)
	at net.minecraft.server.network.ServerPlayNetworkHandler.tick(ServerPlayNetworkHandler:212)
	at net.minecraft.network.ClientConnection.tick(ClientConnection:238)
	at net.minecraft.server.ServerNetworkIo.tick(ServerNetworkIo:183)
	at net.minecraft.server.MinecraftServer.tickWorlds(MinecraftServer:902)
	at net.minecraft.server.MinecraftServer.tick(MinecraftServer:831)
	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer:96)
	at net.minecraft.server.MinecraftServer.handler$bnh000$modifiedRunLoop(MinecraftServer:5890)
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer:676)
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer:270)
	at java.lang.Thread.run(Thread.java:831)
Crash on disconnect
carpetextra.helpers.ThrowableSuppression: Update suppression
	at Not Enough Crashes deobfuscated stack trace.(1.17.1+build.37)
	at net.minecraft.world.World.handler$bli000$checkUpdateSuppression(World:5063)
	at net.minecraft.world.World.updateNeighbor(World:358)
	at net.minecraft.world.World.updateNeighborsAlways(World:320)
	at net.minecraft.block.entity.TrappedChestBlockEntity.onInvOpenOrClose(TrappedChestBlockEntity:18)
	at net.minecraft.class_2595$1.onViewerCountUpdate(class_2595.java:44)
	at net.minecraft.block.entity.ViewerCountManager.closeContainer(ViewerCountManager:39)
	at net.minecraft.block.entity.ChestBlockEntity.onClose(ChestBlockEntity:140)
	at net.minecraft.screen.GenericContainerScreenHandler.close(GenericContainerScreenHandler:109)
	at net.minecraft.entity.player.PlayerEntity.remove(PlayerEntity:1393)
	at net.minecraft.server.world.ServerWorld.removePlayer(ServerWorld:825)
	at net.minecraft.server.PlayerManager.remove(PlayerManager:382)
	at net.minecraft.server.network.ServerPlayNetworkHandler.onDisconnected(ServerPlayNetworkHandler:1135)
	at net.minecraft.network.ClientConnection.handleDisconnection(ClientConnection:415)
	at net.minecraft.server.ServerNetworkIo.tick(ServerNetworkIo:196)
	at net.minecraft.server.MinecraftServer.tickWorlds(MinecraftServer:902)
	at net.minecraft.server.MinecraftServer.tick(MinecraftServer:831)
	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer:96)
	at net.minecraft.server.MinecraftServer.handler$bnh000$modifiedRunLoop(MinecraftServer:5890)
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer:676)
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer:270)
	at java.lang.Thread.run(Thread.java:831)

In all three of the above cases, the ThrowableSuppression exception is not caught anywhere in Carpet code, causing it to crash the game. Normally, any ThrowableSuppression exceptions should be caught properly and displayed as a simple message to the user.

See the video by FX-PROCESS: https://www.youtube.com/watch?v=RchVIanvMVg

commented

You are not running Carpet 1.4.52 in those stack traces because updateSuppressionCrashFix was moved from Carpet extra into main Carpet in 40-something, making Extra versions before latest (therefore with updateSuppressionCrashFix) incompatible with newer carpet versions, but the ThrowableSuppression there definitely comes from extra (carpetextra.helpers).

If it's actually not that (almost sure it is though, but later edits may have made it compatible again) try updating extra to prevent the extra exception from being used and therefore skipped in the carpet catcher.

commented

Yeah, seems to be related to the move. If you can confirm 1.18 version of carpet and carpet extra that would be great.

commented

Closing this as the version was incorrect and there's been no feedback on this issue, and update suppression via exceptions is no longer a thing in the versions carpet targets now. Feel free to comment and it can be reopened, or make a new issue.