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

Network bugs #59

Closed SquidDev closed 8 years ago

SquidDev commented 9 years ago

Thought I'd caught all of these. Obviously not.

java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922)
    at java.util.HashMap$KeyIterator.next(HashMap.java:956)
    at com.google.common.collect.AbstractMapBasedMultimap$WrappedCollection$WrappedIterator.next(AbstractMapBasedMultimap.java:486)
    at org.squiddev.cctweaks.core.network.bridge.NetworkBindings.removeNode(NetworkBindings.java:45)
    at org.squiddev.cctweaks.core.network.bridge.NetworkBinding.destroy(NetworkBinding.java:57)
    at org.squiddev.cctweaks.core.network.bridge.NetworkBindingWithModem.destroy(NetworkBindingWithModem.java:63)
    at org.squiddev.cctweaks.turtle.TurtleUpgradeWirelessBridge$TurtleBinding$TurtleModemPeripheral.detach(TurtleUpgradeWirelessBridge.java:230)
    at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.nativeDetach(PeripheralAPI.java:87)
    at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.detach(PeripheralAPI.java:60)
    at dan200.computercraft.core.apis.PeripheralAPI.shutdown(PeripheralAPI.java:368)
    at dan200.computercraft.core.computer.Computer$2.execute(Computer.java:757)
    at dan200.computercraft.core.computer.ComputerThread$1$1.run(ComputerThread.java:111)
    at java.lang.Thread.run(Thread.java:745)

also

java.lang.NullPointerException: Cannot find point for node Modem: PocketWirelessBinding$PocketBinding$PocketModem@51765f36 (1707, 69, -114)
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:253)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.getPoint(NetworkController.java:83)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.removeNode(NetworkController.java:197)
    at org.squiddev.cctweaks.core.network.modem.BasicModem.destroy(BasicModem.java:218)
    at org.squiddev.cctweaks.core.network.bridge.NetworkBindingWithModem.destroy(NetworkBindingWithModem.java:64)
    at org.squiddev.cctweaks.integration.peripheralspp.PocketWirelessBinding$PocketBinding$PocketModemPeripheral.detach(PocketWirelessBinding.java:216)
    at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.nativeDetach(PeripheralAPI.java:87)
    at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.detach(PeripheralAPI.java:60)
    at dan200.computercraft.core.apis.PeripheralAPI.shutdown(PeripheralAPI.java:368)
    at dan200.computercraft.core.computer.Computer$2.execute(Computer.java:757)
    at dan200.computercraft.core.computer.ComputerThread$1$1.run(ComputerThread.java:111)
    at java.lang.Thread.run(Thread.java:745)

At a guess I'd say that the computer thread is disposing of the network at the same time the computer is disposing of them.

SquidDev commented 8 years ago

Some from #66

java.lang.RuntimeException: You didn't mount this location
        at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.unmount(PeripheralAPI.java:200)
        at org.squiddev.cctweaks.core.network.modem.PeripheralAccess.unmount(PeripheralAccess.java:88)
        at com.theoriginalbit.moarperipherals.api.peripheral.wrapper.WrapperComputer.detach(WrapperComputer.java:127)
        at org.squiddev.cctweaks.core.network.modem.PeripheralAccess.detach(PeripheralAccess.java:47)
        at org.squiddev.cctweaks.core.network.modem.BasicModem.detachPeripheral(BasicModem.java:89)
        at org.squiddev.cctweaks.core.network.modem.BasicModem.networkInvalidated(BasicModem.java:201)
        at org.squiddev.cctweaks.core.network.controller.Point.networkInvalidated(Point.java:112)
        at org.squiddev.cctweaks.core.network.controller.NetworkController.handleInvalidation(NetworkController.java:163)
        at org.squiddev.cctweaks.core.network.controller.NetworkController.handleInvalidation(NetworkController.java:158)
        at org.squiddev.cctweaks.core.network.controller.NetworkController.<init>(NetworkController.java:45)
        at org.squiddev.cctweaks.core.network.controller.NetworkController.handleSplit(NetworkController.java:148)
        at org.squiddev.cctweaks.core.network.controller.NetworkController.removeNode(NetworkController.java:201)
        at org.squiddev.cctweaks.core.network.AbstractWorldNode.destroy(AbstractWorldNode.java:44)
        at dan200.computercraft.shared.peripheral.modem.TileCable.destroy(TileCable.java:122)
        at dan200.computercraft.shared.peripheral.modem.TileCable.onChunkUnload(TileCable.java:130)
        at net.minecraft.world.World.func_72939_s(World.java:1979)
        at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:489)
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:636)
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:334)
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:427)
        at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)
java.lang.RuntimeException: You are not attached to this Computer
    at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.queueEvent(PeripheralAPI.java:221)
    at org.squiddev.cctweaks.core.network.modem.PeripheralAccess.detach(PeripheralAccess.java:48)
    at org.squiddev.cctweaks.core.network.modem.BasicModem.detachPeripheral(BasicModem.java:89)
    at org.squiddev.cctweaks.core.network.modem.BasicModem.networkInvalidated(BasicModem.java:201)
    at org.squiddev.cctweaks.core.network.controller.Point.networkInvalidated(Point.java:112)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.handleInvalidation(NetworkController.java:163)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.handleInvalidation(NetworkController.java:158)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.<init>(NetworkController.java:45)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.handleSplit(NetworkController.java:148)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.removeNode(NetworkController.java:201)
    at org.squiddev.cctweaks.core.network.AbstractWorldNode.destroy(AbstractWorldNode.java:44)
    at dan200.computercraft.shared.peripheral.modem.TileCable.destroy(TileCable.java:122)
    at dan200.computercraft.shared.peripheral.modem.TileCable.onChunkUnload(TileCable.java:130)
    at net.minecraft.world.World.func_72939_s(World.java:1979)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:489)
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:636)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:334)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:427)
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)
java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922)
    at java.util.HashMap$KeyIterator.next(HashMap.java:956)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:341)
    at java.util.HashSet.<init>(HashSet.java:117)
    at org.squiddev.cctweaks.core.network.modem.BasicModem.networkInvalidated(BasicModem.java:197)
    at org.squiddev.cctweaks.core.network.controller.Point.networkInvalidated(Point.java:112)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.handleInvalidation(NetworkController.java:163)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.handleInvalidation(NetworkController.java:158)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.<init>(NetworkController.java:45)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.handleSplit(NetworkController.java:148)
    at org.squiddev.cctweaks.core.network.controller.NetworkController.removeNode(NetworkController.java:201)
    at org.squiddev.cctweaks.core.network.AbstractWorldNode.destroy(AbstractWorldNode.java:44)
    at dan200.computercraft.shared.peripheral.modem.TileCable.destroy(TileCable.java:122)
    at dan200.computercraft.shared.peripheral.modem.TileCable.onChunkUnload(TileCable.java:130)
    at net.minecraft.world.World.func_72939_s(World.java:1979)
    at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:489)
    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:636)
    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:334)
    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:547)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:427)
    at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:685)
java.lang.NullPointerException
 at org.squiddev.cctweaks.core.network.modem.BasicModemPeripheral.detach(BasicModemPeripheral.java:127)
 at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.nativeDetach(PeripheralAPI.java:87)
 at dan200.computercraft.core.apis.PeripheralAPI$PeripheralWrapper.detach(PeripheralAPI.java:60)
 at dan200.computercraft.core.apis.PeripheralAPI.shutdown(PeripheralAPI.java:368)
 at dan200.computercraft.core.computer.Computer$2.execute(Computer.java:757)
 at dan200.computercraft.core.computer.ComputerThread$1$1.run(ComputerThread.java:111)
 at java.lang.Thread.run(Thread.java:745)
SquidDev commented 8 years ago

The above commit appears to have fixed these.