Tumbleweeds are able to deadlock the server
TelepathicGrunt opened this issue ยท 2 comments
I was running World Blender with All of Fabric 6 and the server deadlocked. I opened up VisualVM and did a thread dump and found that the server thread was stuck on at party.lemons.biomemakeover.world.TumbleweedSpawner.update(TumbleweedSpawner.java:47)
Full thread dump here: https://paste.ee/p/mgnh0
Here's a deobfuscated stacktrace of the server thread:
"Server thread" #410 prio=5 os_prio=0 tid=0x000001b0290bb800 nid=0xa04c runnable [0x000000a02d8fe000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x0000000539b6eb08> (a java.lang.String)
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at net.minecraft.util.thread.ThreadExecutor.waitForTasks(ThreadExecutor.java:518)
at net.minecraft.util.thread.ThreadExecutor.runTasks(ThreadExecutor.java:129)
at net.minecraft.server.world.ServerChunkManager.getChunkBlocking(ServerChunkManager.java:1269)
at net.minecraft.server.world.ServerChunkManager.getChunk(ServerChunkManager.java:1165)
at net.minecraft.world.World.getChunkLithium(World.java:6740)
at net.minecraft.world.World.getChunk(World.java:6726)
at net.minecraft.world.World.getBlockState(World.java:408)
at net.minecraft.world.WorldView.isAir(WorldView.java:85)
at party.lemons.biomemakeover.world.TumbleweedSpawner.update(TumbleweedSpawner.java:47)
at party.lemons.biomemakeover.BiomeMakeover$$Lambda$6250/1422038549.onEndTick(Unknown Source)
at net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents.lambda$static$6(ServerTickEvents.java:108)
at net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents$$Lambda$3112/1850391384.onEndTick(Unknown Source)
at net.minecraft.world.World.handler$eba000$tickWorldAfterBlockEntities(World.java:8775)
at net.minecraft.world.World.tickBlockEntities(World.java:557)
at net.minecraft.server.world.ServerWorld.tick(ServerWorld.java:429)
at net.minecraft.server.MinecraftServer.tickWorlds(MinecraftServer.java:871)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:811)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:91)
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:670)
at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:257)
at net.minecraft.server.MinecraftServer$$Lambda$10881/1063973963.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Specifically, my guess is the tumbleweed rolled into an ungenerated chunk, tried to get that chunk, and somehow deadlocked? Very odd