Movecraft icon indicating copy to clipboard operation
Movecraft copied to clipboard

Large crafts crashing craft thread

Open TheRealBotcrusher opened this issue 6 years ago • 11 comments

Description:

Moving obscenely large crafts (600k) quickly results in craft corruption, and that craft's thread crashing, ignoring any further inputs

To Reproduce:

  1. Make ship of appropriate size
  2. Move, turn or cruise around for short duration
  3. Thread crashes with following warnings

Versions (please complete the following information):

  • Movecraft: 7.0.0 prerelease 6
  • Java OpenJDK 1.8
  • Minecraft 1.12.2

Additional context Testing a small craft (With a piece that broke off of the original ship incidentally) resulted in expected behavior and no warnings.

The issue persists through server restarts.

Upon restarting the server, there are now moved and copied fragments of the ship floating around in previously traveled locations

Craft also erroneously fails to repilot on a "craft too large error" despite being in the middle of the air. Abuse.craft.txt

TheRealBotcrusher avatar Mar 27 '19 23:03 TheRealBotcrusher

600k is obscenely large for a craft...

Could it be that the craft is eating up so much processing power that it killed itself?

TylerS1066 avatar Mar 27 '19 23:03 TylerS1066

It sounds like something with minecraft it self. A craft of 600k blocks is bound to cause issues with not just the plugin but minecraft it self and basically break the game and cause strange behavior

Sent from my iPad

On Mar 27, 2019, at 7:57 PM, Tyler [email protected] wrote:

600k is obscenely large for a craft...

Could it be that the craft is eating up so much processing power that it killed itself?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

keough99 avatar Mar 28 '19 00:03 keough99

Right up until it did crash the thread, it was operating well. It has free reign on an E3-1240 v3, and at least according to my CPU charts and server performance metrics it was doing fine.

TheRealBotcrusher avatar Mar 28 '19 00:03 TheRealBotcrusher

Keough might have a point in that any 600k craft will undoubtedly span much more than minecraft is designed to load at once. Although movecraft in theory loads all of the chunks for a craft I have had many instances of a craft being shredded because it was moving in unloaded chunks.

I'd advise attempting to find the upper limit of what size craft will still function correctly and that may help us diagnose what issue is causing it.

TylerS1066 avatar Mar 28 '19 00:03 TylerS1066

I don’t really think we can trust performance metrics and monitoring from the system it self. Minecraft wasn’t meant to handle crafts of 600k it technically wasn’t meant to handle something like movecraft. Usually on enterprise systems if a process takes up such an enormous amount of resources that it would crash the system usually the system will forcefully kill that task to prevent a crash of the physical server it self. I would put it up to both minecraft and the system it self.

Sent from my iPad

On Mar 27, 2019, at 8:04 PM, botcrusher [email protected] wrote:

Right up until it did crash the thread, it was operating well. It has free reign on an E3-1240 v3, and at least according to my CPU charts and server performance metrics it was doing fine.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

keough99 avatar Mar 28 '19 00:03 keough99

Usually on enterprise systems if a process takes up such an enormous amount of resources [...] usually the system will forcefully kill that task

I highly doubt it, on Airship Pirates we are constantly running out hardware to it's limits and have never had our "enterprise systems" kill it. IMO this likely was a case of movecraft/bukkit not loading a chunk in time and the craft not being moved correctly as a result.

TylerS1066 avatar Mar 28 '19 00:03 TylerS1066

It's a dedicated box I have full control over if that's what you're wondering. As part of more testing, I made a new craft and got about three blocks sideways before movecraft freaked out.

I'll play with dimensions and ramp up my server's chunkloading to see if that prevents it. At the time of the most recent ship crash, the server was only using about 50% of a thread.

TheRealBotcrusher avatar Mar 28 '19 00:03 TheRealBotcrusher

Loading about 4GB worth of chunks (view distance 30) seems to have worked around the issue.

Perhaps Movecraft should check or forceload any chunks it's about to move into?

(Side note, long time no see Tyler.)

TheRealBotcrusher avatar Mar 28 '19 00:03 TheRealBotcrusher

Perhaps Movecraft should check or forceload any chunks it's about to move into?

It is supposed to be doing this already. I haven't tested if it actually does or not, but I usually try to take bukkit's (and sometimes yarro's) code at face value for sanity sake. I do know for a fact that it does not always work correctly and has taken huge chunks out of ships that were cruising without a player nearby (and somehow movecraft detected this change and sunk the crafts). If it's an internal bukkit issue then we probably can't solve it without contacting the devs themselves, if it is movecraft's issue then we should attempt to debug it.

(Side note, long time no see Tyler.)

Good to see ya back around.

TylerS1066 avatar Mar 28 '19 00:03 TylerS1066

There's most likely an issue with an async call being made somewhere in the async task where its required by Bukkit to be synchronized with the main thread. It's probably crashing due to a race condition that is only being brought out due to the async section of craft translation taking so much longer than usual.

oh-noey avatar Mar 28 '19 02:03 oh-noey

Has anyone tried this on one of the 8.0 alphas? I'd be interested to see what edge cases this exposes in the codebase.

TylerS1066 avatar Mar 22 '22 23:03 TylerS1066