[invalid] ConcurrentModificationException in cross world /home
meiskam opened this issue ยท 2 comments
When using /home in the nether or end it causes this error, the user is left in a half-connected state forcing them to reconnect to keep playing.
Warmup/cooldown is set to 0
ver
This server is running CraftBukkit version git-Spigot-bf0ac55-3fc97ff (MC: 1.8) (Implementing API version 1.8-R0.1-SNAPSHOT)
ver HomeSpawnPlus
HomeSpawnPlus version 2.0-b610
Author: andune
pl
Plugins (31): LevelHearts, WorldEdit, InfernalMobs, Vault, PermissionsEx, LogBlock, LWC, WorldGuard, EditableSign, ExpCurrency, HomeSpawnPlus, BossbarAPI, DamageIndicatorHolograms, BetterBeds, geSuitTeleports, geSuitBans, Chat, CloudTrade, Banknotes, EggCatcher, ProtocolLib, HolographicDisplays, SimpleClans, MCB, AutoRestart, NoCheatPlus, ParticleHats, FramePicture, EconCommands, PlayerHeads, TouchscreenHolograms
[HomeSpawnPlus] Caught exception in command /home
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922) ~[?:1.7.0_72]
at java.util.HashMap$KeyIterator.next(HashMap.java:956) ~[?:1.7.0_72]
at net.minecraft.server.v1_8_R1.EntityTracker.track(EntityTracker.java:32) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.WorldManager.a(WorldManager.java:18) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.World.a(World.java:1060) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.WorldServer.a(WorldServer.java:953) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.World.addEntity(World.java:1053) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.World.addEntity(World.java:981) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.PlayerList.moveToWorld(PlayerList.java:569) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer.teleport(CraftPlayer.java:475) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at org.bukkit.craftbukkit.v1_8_R1.entity.CraftEntity.teleport(CraftEntity.java:223) ~[spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at com.andune.minecraft.hsp.shade.commonlib.server.bukkit.BukkitPlayer.teleport(BukkitPlayer.java:126) ~[HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.shade.commonlib.server.bukkit.BukkitTeleport.teleport(BukkitTeleport.java:85) ~[HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.commands.Home.doHomeTeleport(Home.java:250) ~[HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.commands.Home.privateExecute(Home.java:213) ~[HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.commands.Home.execute(Home.java:74) ~[HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.command.BaseCommand.execute(BaseCommand.java:129) [HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.commands.uber.BaseUberCommand.executePrivate(BaseUberCommand.java:317) [HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.commands.uber.BaseUberCommand.execute(BaseUberCommand.java:260) [HomeSpawnPlus.jar:2.0]
at com.andune.minecraft.hsp.server.bukkit.command.BukkitCommandRegister$1.onCommand(BukkitCommandRegister.java:145) [HomeSpawnPlus.jar:2.0]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:646) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerConnection.java:1115) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:950) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:26) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:53) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [?:1.7.0_72]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [?:1.7.0_72]
at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [spigot.jar:git-Spigot-bf0ac55-3fc97ff]
at java.lang.Thread.run(Thread.java:745) [?:1.7.0_72]
Bizarre. There are two situations where HSP has to punt teleports to future events: one is on player login because the Bukkit API doesn't support setting location on login event, the other is on warmup events, since they happen (obviously) at a time later than the command being run.
In both of those cases, HSP only runs on the sync main thread. HSP does not do async/concurrent processing anywhere. Further, your specific stack trace has neither of these activities happening - your stack trace is a straightforward teleport in the same thread as the player running "/home".
In other words, there is nothing to my knowledge that HSP is doing that could cause this activity. HSP strictly adheres to only running events on the sync thread.
Given this plus the fact that I have never seen this reported before (ie. this is not a widespread issue among HSP installs - this is the first reported instance of this in years of hundreds of servers using this plugin), I think it is more likely that some other plugin you are running is doing something bad async and causing this error. If you can fairly consistently produce this problem, I'd suggest turning off other plugins one at a time until you find the culprit.