Lophine icon indicating copy to clipboard operation
Lophine copied to clipboard

WaypointManager 存在 ConcurrentModificationException 异步异常抛出

Open Suisuroru opened this issue 1 month ago • 2 comments

测试的时候出现了如下崩服信息: [21:27:40 ERROR]: [io.papermc.paper.threadedregions.TickRegionScheduler] Region #21261 centered at chunk [0, -1] in world 'world' failed to tick: java.util.ConcurrentModificationException: null at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:1023) ~[?:?] at java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:1058) ~[?:?] at java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:1055) ~[?:?] at com.google.common.collect.StandardTable$Column$EntrySetIterator.computeNext(StandardTable.java:577) ~[guava-33.3.1-jre.jar:?] at com.google.common.collect.StandardTable$Column$EntrySetIterator.computeNext(StandardTable.java:570) ~[guava-33.3.1-jre.jar:?] at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145) ~[guava-33.3.1-jre.jar:?] at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140) ~[guava-33.3.1-jre.jar:?] at java.base/java.util.Map.forEach(Map.java:723) ~[?:?] at net.minecraft.server.waypoints.ServerWaypointManager.untrackWaypoint(ServerWaypointManager.java:58) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.server.waypoints.ServerWaypointManager.removePlayer(ServerWaypointManager.java:109) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.server.level.ServerLevel$EntityCallbacks.onTrackingEnd(ServerLevel.java:2935) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.server.level.ServerLevel$EntityCallbacks.onTrackingEnd(ServerLevel.java:2797) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at ca.spottedleaf.moonrise.patches.chunk_system.level.entity.EntityLookup.entityStatusChange(EntityLookup.java:304) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at ca.spottedleaf.moonrise.patches.chunk_system.level.entity.EntityLookup$EntityCallback.onRemove(EntityLookup.java:1001) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.world.entity.Entity.setRemoved(Entity.java:6256) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.world.entity.Entity.remove(Entity.java:733) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.world.entity.LivingEntity.remove(LivingEntity.java:764) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.world.entity.player.Player.remove(Player.java:1470) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.server.level.ServerLevel.removePlayerImmediately(ServerLevel.java:1750) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.server.level.ServerPlayer.transformForAsyncTeleport(ServerPlayer.java:1786) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.server.level.ServerPlayer.transformForAsyncTeleport(ServerPlayer.java:196) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.world.entity.Entity.teleportAsync(Entity.java:4464) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at org.bukkit.craftbukkit.entity.CraftEntity.lambda$teleportAsync$5(CraftEntity.java:1137) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at io.papermc.paper.threadedregions.EntityScheduler.executeTick(EntityScheduler.java:243) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1667) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at io.papermc.paper.threadedregions.TickRegions$ConcreteRegionTickHandle.tickRegion(TickRegions.java:409) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at io.papermc.paper.threadedregions.TickRegionScheduler$RegionScheduleHandle.runTick(TickRegionScheduler.java:452) ~[lophine-1.21.8.jar:1.21.8-DEV-184048f] at ca.spottedleaf.concurrentutil.scheduler.SchedulerThreadPool$TickThreadRunner.run(SchedulerThreadPool.java:546) ~[concurrentutil-0.0.3.jar:?] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]

是否相关呢,如果不相关需要单独开一个issue嘛

Originally posted by @ColdTearsYY in #79

Suisuroru avatar Oct 31 '25 18:10 Suisuroru

又出现了:https://mclo.gs/L5cKzrn

ColdTearsYY avatar Nov 03 '25 16:11 ColdTearsYY

如果非必要的话,你先把玩家定位器关了用一段时间吧,这个优先级并不高,而且本来就标注了unsafe

Suisuroru avatar Nov 03 '25 16:11 Suisuroru

试试 91b3ad527c0d1e4a3aebb278c5b8effa2b94d1cb ,我完全使用了线程安全的方法进行了重写

Suisuroru avatar Dec 09 '25 17:12 Suisuroru