SquidDev-CC / CCTweaks

Random additions to ComputerCraft (somewhat deprecated, use CC-Tweaked if you're on Minecraft 1.12).
MIT License
12 stars 2 forks source link

Weird bug with Sponge installed #106

Closed inklit closed 8 years ago

inklit commented 8 years ago

This is a pretty weird bug that only happens when Sponge is installed, it never crashes the server because Sponge seems to realize what happened is bad. It doesnt show up very commonly and I really don't know how to reproduce it, but somebodys computer will get a JVM error on screen whenever it happens, much similar to the error thrown to console.

[08:48:52] [Coroutine-426/ERROR] [Sponge]: Detected attempt to add entity 'EntityItem['item.item.seeds'/102807, l='world', x=6101.51, y=6.00, z=1979.82]' to tracker asynchronously.
 This is very bad as it can cause ConcurrentModificationException's during a server tick.
 Skipping...
 java.lang.Exception: Stack trace
    at java.lang.Thread.dumpStack(Thread.java:1329)
    at net.minecraft.entity.EntityTracker.handler$onAddEntityToTracker$0(EntityTracker.java:56)
    at net.minecraft.entity.EntityTracker.func_72785_a(EntityTracker.java)
    at net.minecraft.entity.EntityTracker.func_72786_a(EntityTracker.java:148)
    at net.minecraft.world.WorldManager.func_72703_a(SourceFile:30)
    at net.minecraft.world.World.func_72923_a(World.java:1135)
    at net.minecraft.world.WorldServer.func_72923_a(WorldServer.java:945)
    at net.minecraft.world.World.handler$spongeLoadEntities$0(World.java:968)
    at net.minecraft.world.World.func_175650_b(World.java)
    at net.minecraft.world.chunk.Chunk.func_76631_c(Chunk.java:913)
    at net.minecraftforge.common.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:46)
    at net.minecraftforge.common.chunkio.ChunkIOProvider.callStage2(ChunkIOProvider.java:12)
    at net.minecraftforge.common.util.AsynchronousExecutor.skipQueue(AsynchronousExecutor.java:344)
    at net.minecraftforge.common.util.AsynchronousExecutor.getSkipQueue(AsynchronousExecutor.java:302)
    at net.minecraftforge.common.chunkio.ChunkIOExecutor.syncChunkLoad(ChunkIOExecutor.java:12)
    at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:109)
    at net.minecraft.world.gen.ChunkProviderServer.func_73158_c(ChunkProviderServer.java:84)
    at net.minecraft.world.gen.ChunkProviderServer.func_73154_d(ChunkProviderServer.java:153)
    at net.minecraft.world.World.func_72964_e(World.java:287)
    at net.minecraft.world.World.func_175726_f(World.java:282)
    at net.minecraft.world.World.func_180495_p(World.java:822)
    at dan200.computercraft.shared.common.TileGeneric.getBlock(TileGeneric.java:53)
    at dan200.computercraft.shared.computer.blocks.TileComputerBase.getBlock(TileComputerBase.java:50)
    at dan200.computercraft.shared.computer.blocks.TileComputerBase.getFamily(TileComputerBase.java:413)
    at dan200.computercraft.shared.turtle.core.TurtleBrain.getFuelLimit(TurtleBrain.java:645)
    at dan200.computercraft.shared.turtle.core.TurtleBrain.getFuelLevel(TurtleBrain.java:632)
    at dan200.computercraft.shared.turtle.apis.TurtleAPI.callMethod(TurtleAPI.java:397)
    at org.squiddev.cctweaks.api.lua.ArgumentDelegator.delegateLuaObject(ArgumentDelegator.java:37)
    at org.squiddev.cctweaks.lua.lib.LuaHelpers.delegateLuaObject(LuaHelpers.java:28)
    at dan200.computercraft.core.lua.LuaJLuaMachine$2.invoke(LuaJLuaMachine.java:341)
    at org.squiddev.luaj.luajc.function.LuaVM.execute(LuaVM.java:262)
    at org.squiddev.luaj.luajc.function.executors.ClosureExecutor.execute(ClosureExecutor.java:136)
    at org.squiddev.luaj.luajc.function.FunctionWrapper.onInvoke(FunctionWrapper.java:59)
    at org.squiddev.luaj.luajc.function.FunctionWrapper.invoke(FunctionWrapper.java:54)
    at org.squiddev.luaj.luajc.function.LuaVM.execute(LuaVM.java:299)
    at org.squiddev.luaj.luajc.function.executors.ClosureExecutor.execute(ClosureExecutor.java:136)
    at java.lang.Thread.run(Thread.java:745)
[08:48:52] [Coroutine-426/ERROR] [Sponge]: Detected attempt to add entity 'EntitySheep['Sheep'/102808, l='world', x=6107.14, y=65.00, z=1973.16]' to tracker asynchronously.
 This is very bad as it can cause ConcurrentModificationException's during a server tick.
 Skipping...
SquidDev commented 8 years ago

Pretty sure this is a CC bug but I'll have a look.

SquidDev commented 8 years ago

Finally got round to looking at this. The turtle is trying to get its current family, which requires getting its block, which then seems to be loading the chunk. This shouldn't be happening: the turtle won't exist if the chunk isn't loaded. You could try disabling luaj.luajc to see if it has any effect: though I doubt it will.

This is a CC bug: there isn't much I can do about it. I'll have a look at reproducing without CCTweaks.