zerofall / EZStorage2

EZStorage 2 for Minecraft 1.9.4
MIT License
7 stars 8 forks source link

Crash when pulling/crafting an item after another item has ben removed from the game #33

Closed nzhook closed 8 years ago

nzhook commented 8 years ago

We have been encountering a server crash when people take items out of the ezStorage using any method (manual or extractor). From testing the crash occurs when pulling an items out of the storage after an item has been removed from the pack (eg. a mod updates or is removed)

Testing in single player yields no crash report, however http://pastebin.com/iP6ufb6h shows the launcher output.

In this case I had a stack of EnderIO Quite Clear Glass and A stack of cobble in the ezStorage, after removing EnderIO from the pack. I attempted to pull the Cobble from the storage and the game crashed with 'A fatal error has occured, this connection is terminated' and a java.lang.NullPointerException at com.zerofall.ezstorage.util.EZInventory.getItemsAt(EZInventory.java:99) ~[EZInventory.class:?] - shown in the pastebin - in the console. NOTE: I could only get this to happen once per missing item, so after I restarted the next time I pulled cobble from the setup it seemed to work fine. However I could reproduce it with the mods: Roots, Tinkers and EnderIO. Not sure if it is related to this specific issue but I have also heard reports that in Multiplayer, the symptom after pulling an item out is the client will stay connected but unable to do anything but chat (eg. cant open chests, doors...). When that client disconnects the server will then crash.

Version info: ezStorage 2.2.2 Forge 12.18.1.2076 Minecraft 1.10.2 Pack: Avant 3 on Curse (versions 1.9 and 1.10 are known to have the issue)

sblectric commented 8 years ago

Yeah, the only fix for this is restarts like you said. Pretty much no storage mod likes having mods removed from it.

nzhook commented 8 years ago

I didn't say we restarted the server, ezStorage2 CRASHED the server with a NullPointerException when people took items out (after a mod pack upgrade an hour earlier). This is far more serious and I am not aware of any other storage mod that does not gracefully handle this situation.

As mod packs change and mod authors add and remove items to their mods, this is a pretty serious bug which will impact if the mod remains in any modpack,

sblectric commented 8 years ago

I could only get this to happen once per missing item, so after I restarted the next time I pulled cobble from the setup it seemed to work fine

You said here restarts fixed it.

Anyway, without me adding some elaborate system-check when the storage core is loaded into the world, restarts are the only way to fix this bug.

nzhook commented 8 years ago

Yes, that is correct the server is restarted after it crashes. However it also says: 'I could only get this to happen once per missing item'. So if there are 100 storage cores, each store core contains 100 missing items after a pack upgrade it would result in 10,000 crashes to resolve this. To any server operator/mod creator that is a instant remove the mod as it is crashing the server.

I don't understand why you would need an elaborate check when the core is loaded. A simple catch statement when an item is pulled (via the esStorage GUI or using the extractor) out would be sufficient (although I don't know where the issue occurs, it maybe better to check an item still exists in game before looking up nbt data) - this is how most other storage mods handle it.

sblectric commented 8 years ago

would result in 10,000 crashes to resolve this

You actually don't even need to open the cores to fix them, just have them loaded in the world and restart the server.