Better Questing

Better Questing

39M Downloads

ConcurrentModificationException

Opened this issue ยท 1 comments

commented

I am using BetterQuesting-3.3.237.jar for Minecraft v1.10 and I get the error: ConcurrentModificationException.

My system: Linux Ubuntu 16.04
Java: 1.8.0_161 (Oracle)
Memory for minecraft: 6GB (System: 16GB)
Running from SSD: Samsung 960 EVO
Modpack: Forever stranded

I am a Java programmer myself. I think the problem is related to modifying the database hashmap outside the iterator in writeToNBT (lines 112-120 of RewardStorage.java). See https://stackoverflow.com/a/602660

---- Minecraft Crash Report ----

WARNING: coremods are present:
CoreMod (Aroma1997Core-1.9.4-1.1.1.2.jar)
CoFH Loading Plugin (CoFHCore-1.10.2-4.1.12.17-universal.jar)
FMLPlugin (InventoryTweaks-1.62-dev-66.jar)
LoadingPlugin (RandomThings-MC1.10.2-3.7.7.1.jar)
LoadingPlugin (ResourceLoader-MC1.9.4-1.5.1.jar)
EnderCorePlugin (EnderCore-1.10.2-0.4.1.66-beta.jar)
Do not report to Forge! Remove FoamFixAPI (or replace with FoamFixAPI-Lawful) and try again. (foamfix-0.7.2-anarchy.jar)
AppEngLoadingPlugin (appliedenergistics2-rv4-stable-1.jar)
IC2core (industrialcraft-2-2.6.252-ex110.jar)
AppleCore (AppleCore-mc1.10.2-3.1.0.jar)
TANLoadingPlugin (ToughAsNails-1.9.4-1.1.1.66-universal.jar)
LoadingPlugin (Bloodmoon-MC1.10.2-1.5.1.jar)
CCLCorePlugin (CodeChickenLib-1.10.2-2.5.9.320-universal.jar)
BlurPlugin (Blur-1.0.4-14.jar)
LoadingPlugin (Quark-r1.1-70.jar)
RebornCoreASM (RebornCore-1.10.2-2.13.6.142-universal.jar)
CTMCorePlugin (CTM-MC1.10.2-0.2.3.26.jar)
PSLoadingPlugin (PerfectSpawn-MC1.10.2-1.4.jar)
AdvancedRocketryPlugin (AdvancedRocketry-1.10.2-1.2.5a.jar)
Contact their authors BEFORE contacting forge

// Quite honestly, I wouldn't worry myself about that.

Time: 3/4/18 7:27 PM
Description: Ticking player

java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
at java.util.HashMap$EntryIterator.next(HashMap.java:1476)
at java.util.HashMap$EntryIterator.next(HashMap.java:1474)
at betterquesting.questing.rewards.RewardStorage.writeToNBT(RewardStorage.java:112)
at betterquesting.questing.QuestInstance.writeToJson_Config(QuestInstance.java:951)
at betterquesting.questing.QuestInstance.writeToNBT(QuestInstance.java:919)
at betterquesting.questing.QuestInstance.getSyncPacket(QuestInstance.java:703)
at betterquesting.handlers.EventHandler.onLivingUpdate(EventHandler.java:168)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_219_EventHandler_onLivingUpdate_LivingUpdateEvent.invoke(.dynamic)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:185)
at net.minecraftforge.common.ForgeHooks.onLivingUpdate(ForgeHooks.java:493)
at net.minecraft.entity.EntityLivingBase.func_70071_h_(EntityLivingBase.java:1931)
at net.minecraft.entity.player.EntityPlayer.func_70071_h_(EntityPlayer.java:233)
at net.minecraft.entity.player.EntityPlayerMP.func_71127_g(EntityPlayerMP.java:303)
at net.minecraft.network.NetHandlerPlayServer.func_73660_a(NetHandlerPlayServer.java:162)
at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.func_73660_a(NetworkDispatcher.java:213)
at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:287)
at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:180)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:732)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:613)
at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:149)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:471)
at java.lang.Thread.run(Thread.java:748)

A detailed walkthrough of the error, its code path and all known details is as follows:

-- Head --
Thread: Server thread
Stacktrace:
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442)
at java.util.HashMap$EntryIterator.next(HashMap.java:1476)
at java.util.HashMap$EntryIterator.next(HashMap.java:1474)
at betterquesting.questing.rewards.RewardStorage.writeToNBT(RewardStorage.java:112)
at betterquesting.questing.QuestInstance.writeToJson_Config(QuestInstance.java:951)
at betterquesting.questing.QuestInstance.writeToNBT(QuestInstance.java:919)
at betterquesting.questing.QuestInstance.getSyncPacket(QuestInstance.java:703)
at betterquesting.handlers.EventHandler.onLivingUpdate(EventHandler.java:168)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_219_EventHandler_onLivingUpdate_LivingUpdateEvent.invoke(.dynamic)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:185)
at net.minecraftforge.common.ForgeHooks.onLivingUpdate(ForgeHooks.java:493)
at net.minecraft.entity.EntityLivingBase.func_70071_h_(EntityLivingBase.java:1931)
at net.minecraft.entity.player.EntityPlayer.func_70071_h_(EntityPlayer.java:233)

commented

Not particularly sure which other thread could be interfering with the list of rewards especially considering it must have either added, removed or completely reloaded the listing which should never happen outside the server tick thread.

On another note, I don't currently maintain older versions of Minecraft. Even though this is a BQ3 build, the 1.12.2 version has long since surpassed it.