Neruina - Ticking Entity Fixer

Neruina - Ticking Entity Fixer

26M Downloads

Updating map data wrap crashing

Tybe571 opened this issue ยท 2 comments

commented

I'm running a server through play.hosting with the modpack Prominence 2: hasturian era. v3.1.20hf
and while loading chunks looking for buried treasure, the server crashed, and then crashes again upon booting up because I'm still holding the map raised up when spawning in.
Neruina mod version: 1.3.0-fabric+1.18.2-1.20.1

Updating neruina to 2.2.11-fabric+1.20.1 Does not change/fix.

crash-2025-05-30_04.13.03-server.txt
crash-2025-05-30_04.04.16-server.txt
crash-2025-05-30_03.58.05-server.txt
crash-2025-05-30_03.54.22-server.txt
crash-2025-05-30_03.50.42-server.txt
crash-2025-05-30_04.17.53-server.txt

Hopefully this is user error and not a server fucked for good.

commented

Update, I have manually worked around the problem.
Used NBTExplorer to delete the map from my inventory and the server ran normally.

commented

This is caused by the server watchdog killing the server thread as it's taking too long to process a given action in a tick. Neruina can't and shouldn't try to stop this as it's very easy for this to break in an even worse way.

Here's the breakdown of the thread dump:

Server is just waiting:

"Server thread" prio=5 Id=70 TIMED_WAITING on java.lang.String@5ed6d41f
	at [email protected]/jdk.internal.misc.Unsafe.park(Native Method)
	-  waiting on java.lang.String@5ed6d41f
	at [email protected]/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269)
	at knot//MC//net.minecraft.util.thread.ThreadExecutor.waitForTasks(ThreadExecutor.java:151)
	at knot//MC//net.minecraft.util.thread.ThreadExecutor.runTasks(ThreadExecutor.java:141)

Get a chunk off the main thread and wait until it's returned:

	at knot//MC//net.minecraft.server.world.ServerChunkManager.getChunkBlocking(ServerChunkManager.java:2788)

Worker thread to get the chunk is still going:

"Worker-Main-10" daemon prio=4 Id=114 RUNNABLE
	at knot//net.minecraft.util.math.MathHelper.lerp2(MathHelper.java:620)
	at knot//net.minecraft.util.math.MathHelper.lerp3(MathHelper.java:632)
	at knot//net.minecraft.ChunkNoiseSampler$Cache2Dclass_5917.sample(ChunkNoiseSampler.java:633)
	at knot//net.minecraft.DensityFunctionTypes$RegistryEntryHolderclass_6932.sample(DensityFunctionTypes.java:270)
	at knot//net.minecraft.DensityFunctionTypes$RegistryEntryHolderclass_6917.sample(DensityFunctionTypes.java:1119)
	at knot//net.minecraft.DensityFunctionTypes$RegistryEntryHolderclass_6932.sample(DensityFunctionTypes.java:270)
	at knot//net.minecraft.DensityFunctionTypes$RegistryEntryHolderclass_6917.sample(DensityFunctionTypes.java:1121)
	at knot//net.minecraft.DensityFunctionTypes$RegistryEntryHolderclass_6933.sample(DensityFunctionTypes.java:723)
	...

Installing the async map locator mod will likely fix this in future as that allows the server thread to continue while the chunks are being queried in the background rather than blocking the server thread.

https://www.curseforge.com/minecraft/mc-mods/async-locator