skyboy / MineFactoryReloaded

104 stars 75 forks source link

Chunks Refusing to Save (Forge confirmed and replicatable) #467

Closed BlackAce21 closed 9 years ago

BlackAce21 commented 9 years ago

After 10 hours of laborious effort from 2 admins and a developer on our server we managed to track down a very vague concurrent modification exception error that we were seeing in our console. Here is a brief overview of the problem.

Issue: Chunk was refusing to save out during unload and due to this any block removed from the chunk would dupe itself by reappearing in the old chunk that didn't save and being in the chunk it was moved to that DID save. The only clue was a CME that happened whenever leaving the chunk and thus unloading it. Pastebin of the exception as seen in the log: http://pastebin.com/R9397Rkt

Process Used: I will try and keep it short but we copied our whole server to a private server to recreate the issue, systematically removing all plugins and mods from the server (we use cauldron but did repeat the problem in forge as well). Eventually I removed Extra Utilities and the problem ceased. From there I moved to inspection of the chunks involved, using a backup I had made prior to removing the mods. After systematically removing as many Extra Utilities blocks in the persons base as I could find I eventually landed on a Trash Can sitting on top of an MFR Deep Storage Unit. Removal of the trash can caused the issue to cease. Creating a new world with a newly generated level.dat and fresh world files produced the same exact issue. The issue is very sporadic and happens in about 80% of chunks tested, it doesn't seem to happen within certain limits near the world spawn protection area although I did not test this extensively. Sufficed to say you can reproduce it if you place any MFR Tile entity or machine next to a trash can in multiple chunks, unload the chunks, and you will see the error. It is NOT limited to MFR Deep Storage Units and seemed to work with any MFR tile entity including conveyer belts and the Rednet Computer

ModPack: Infinity Mod pack version 1.7.0 MFR Mod version: 2.8.0-104 Forge versions Tested: 1408 and 1448 (both have the issue) Kcauldron versions Tested: 1408.95

Link to effected region file: https://www.dropbox.com/s/zow6guyh0uo80w6/r.16.14.mca?dl=0 Trash Can Block Location: (x: 8489, y: 61, z: 7393) Mods required to reproduce: Extra Utilties version 1.2.5 Minefactory Reloaded version 2.8.0-104

Comments: I did not test if this was an issue in different versions of the mods involved, honestly after 10 hours I am happy to make my report to you, make a script to stop placement of a trash can next to MFR blocks on my server and hope it gets fixed down the road lol. I will report this issue to both MFR and Extra Utilities Mod devs. If any further information is needed that I missed let me know and I will do my best to get it to you.

For other server owners: I will post a link to my Bukkit based plugin that will stop players from being able to abuse this issue. It will be custom tailored to the issue and should work no matter what item ID your server has the blocks set to. You have my permission in advance to decompile it, modify it, and use it however you wish.

BlackAce21 commented 9 years ago

Link to the plugin mentioned above, config options for disabling the scanner which checks 9 blocks around all players every 10 ticks by default, configurable in frequency for slower servers. Scanner will remove the trash can and try to add it to the players inventory and sends a message explaining. Also a simple block place listener which checks surrounding blocks when placing an MFR machine or trash can for the other and sends a message. Place listener can be disabled in config as well. Alternately banning the trash cans would solve this issue as well.

https://www.dropbox.com/s/1v7cvdi2m55v1li/InfinityBugFixer.jar?dl=0

AnrDaemon commented 9 years ago

Your ExU is at least 3 versions old. It was already over a month and half old when you started your crusade. And since it is a bug with ExU trashcan, why you are posting it here?

BlackAce21 commented 9 years ago

Nothing I did proved that it was just the ExU trashcan causing the source of the problem. For all I know it was the way MFR is handling its outputs or something. The situation involved both mods, so I have posted it on both mods issue trackers to ensure a solution to the root cause of the problem is found. Assuming it has not already been resolved.

BlackAce21 commented 9 years ago

Also I should mention our server just updated to the latest version of ExU 1.2.8 and the issue persists. Just saw the same CME in console probably from a trashcan my plugin has yet to get rid of =\

skyboy commented 9 years ago

I'm going to need a larger section of the log; +- 50 lines on either side of the error.

BlackAce21 commented 9 years ago

http://pastebin.com/54pFHkJY pulled from the latest log file running 1.2.8 ExU, my plugin stopped the majority of them and this log file seems to only have 2 so far. Let me know if you need more, I put in more then 50 lines in either direction to account for all the "Sending dimension" spam. If you want me to reproduce this in Forge and provide logs of that I can as well just let me know what you need altho I am not sure how much help it will be =\ there is no clear pattern or indication, part of why it was such a pain to find the cause.

skyboy commented 9 years ago

There was a minor error in the trashcan's saving method causing this. Next ExtraUtilities update will resolve this.

BlackAce21 commented 9 years ago

Excellent, thanks a bunch skyboy ^_^