OpenMods / OpenPeripheral-Addons

An addon for OpenPeripheral, adding physical blocks and items to the game
MIT License
11 stars 10 forks source link

Crash when putting glasses on with running program #52

Closed coolacid closed 9 years ago

coolacid commented 9 years ago

Running a program that writes to glasses. Program shows correctly on the glasses. When you remove the glasses and place the glasses back on while leaving the program running, an exception happens.

ModPack : https://feedthebeast.atlassian.net/wiki/display/PML/Infinity+1.7+1.0.2 Version: AIO-1

[19:35:47] [Client thread/ERROR] [FML]: Exception caught during firing event openperipheral.addons.glasses.TerminalEvent$TerminalDataEvent@5b30de77:
java.lang.IllegalArgumentException: Container 27 doesn't exists
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:148) ~[guava-16.0.jar:?]
    at openmods.structured.StructuredData.removeContainer(StructuredData.java:28) ~[StructuredData.class:?]
    at openmods.structured.StructuredDataSlave.interpretCommandList(StructuredDataSlave.java:71) ~[StructuredDataSlave.class:?]
    at openperipheral.addons.glasses.TerminalManagerClient.onTerminalData(TerminalManagerClient.java:52) ~[TerminalManagerClient.class:?]
    at cpw.mods.fml.common.eventhandler.ASMEventHandler_446_TerminalManagerClient_onTerminalData_TerminalDataEvent.invoke(.dynamic) ~[?:?]
    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) ~[ASMEventHandler.class:?]
    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138) [EventBus.class:?]
    at openmods.network.event.NetworkEventInboundHandler.channelRead0(NetworkEventInboundHandler.java:15) [NetworkEventInboundHandler.class:?]
    at openmods.network.event.NetworkEventInboundHandler.channelRead0(NetworkEventInboundHandler.java:10) [NetworkEventInboundHandler.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) [SimpleChannelInboundHandler.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
    at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:212) [ej.class:?]
    at net.minecraft.client.multiplayer.PlayerControllerMP.func_78765_e(PlayerControllerMP.java:273) [bje.class:?]
    at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1590) [bao.class:?]
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:961) [bao.class:?]
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:887) [bao.class:?]
    at net.minecraft.client.main.Main.main(SourceFile:148) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_76]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_76]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_76]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_76]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_76]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_76]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_76]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_76]
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:286) [NewLaunch.jar:?]
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:376) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.listen(EntryPoint.java:165) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.main(EntryPoint.java:54) [NewLaunch.jar:?]
[19:35:47] [Client thread/ERROR] [FML]: Index: 1 Listeners:
[19:35:47] [Client thread/ERROR] [FML]: 0: NORMAL
[19:35:47] [Client thread/ERROR] [FML]: 1: ASM: openperipheral.addons.glasses.TerminalManagerClient@e4242e4 onTerminalData(Lopenperipheral/addons/glasses/TerminalEvent$TerminalDataEvent;)V
[19:35:47] [Client thread/ERROR] [FML]: There was a critical exception handling a packet on channel OpenMods|E
java.lang.IllegalArgumentException: Container 27 doesn't exists
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:148) ~[guava-16.0.jar:?]
    at openmods.structured.StructuredData.removeContainer(StructuredData.java:28) ~[StructuredData.class:?]
    at openmods.structured.StructuredDataSlave.interpretCommandList(StructuredDataSlave.java:71) ~[StructuredDataSlave.class:?]
    at openperipheral.addons.glasses.TerminalManagerClient.onTerminalData(TerminalManagerClient.java:52) ~[TerminalManagerClient.class:?]
    at cpw.mods.fml.common.eventhandler.ASMEventHandler_446_TerminalManagerClient_onTerminalData_TerminalDataEvent.invoke(.dynamic) ~[?:?]
    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:54) ~[ASMEventHandler.class:?]
    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:138) ~[EventBus.class:?]
    at openmods.network.event.NetworkEventInboundHandler.channelRead0(NetworkEventInboundHandler.java:15) ~[NetworkEventInboundHandler.class:?]
    at openmods.network.event.NetworkEventInboundHandler.channelRead0(NetworkEventInboundHandler.java:10) ~[NetworkEventInboundHandler.class:?]
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
    at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:212) [ej.class:?]
    at net.minecraft.client.multiplayer.PlayerControllerMP.func_78765_e(PlayerControllerMP.java:273) [bje.class:?]
    at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1590) [bao.class:?]
    at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:961) [bao.class:?]
    at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:887) [bao.class:?]
    at net.minecraft.client.main.Main.main(SourceFile:148) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_76]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_76]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_76]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_76]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_76]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_76]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_76]
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_76]
    at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:286) [NewLaunch.jar:?]
    at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:376) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.listen(EntryPoint.java:165) [NewLaunch.jar:?]
    at org.multimc.EntryPoint.main(EntryPoint.java:54) [NewLaunch.jar:?]
coolacid commented 9 years ago

This same issue might be causing exceptions for remote users as well. We couldn't figure out when it happens for multi-users, but the user would randomly disconnect.

coolacid commented 9 years ago

Looks like same as #43 maybe - will try setText and report back.

coolacid commented 9 years ago

Implementing the text writing in #43 solves the issue, but should probably handle the error so that more tickets don't happen.

Cheers!

boq commented 9 years ago

It's different bug, but already fixed in snapshots. Sometimes .clear() lefts references to objects. IIRC, this can be triggered with .add*() + .clear() sequence. .sync() between will probably prevent this crash from happening.