[SPIGOT-4594] StackOverflowError caused by wrong placement of tall_grass Created: 26/Jan/19 Updated: 02/Feb/19 Resolved: 27/Jan/19 |
|
Status: | Resolved |
Project: | Spigot |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Bug | Priority: | Minor |
Reporter: | kjiang | Assignee: | Unassigned |
Resolution: | Cannot Reproduce | Votes: | 0 |
Labels: | 1.13, 1.13.2 | ||
Environment: |
git-Spigot-f56e2e7-b634e05 (MC: 1.13.2) Linux 16.04.5 x64 with sufficient ram and hdd space |
Attachments: |
![]() |
||||||||
Issue Links: |
|
||||||||
Version: | 1.13.2 git-Spigot-f56e2e7-b634e05 | ||||||||
Guidelines Read: | Yes |
Description |
A server could be crashed just by simply place tall_grass blocks in a certain way: 1. Set the ground to some non-dirt block, e.g. /fill ~ ~-1 ~ ~100 ~-1 ~100 2. Set the top layer to tall_grass, e.g. /fill ~ ~ ~ ~100 ~1 ~100 tall_grass 3. Save /save-all 4. Just break any of the tall_grass with your hand 5. Boom! crashed 6. Even you start the server again, it will still crash once you join the server, because the tall_grass are not been fully pop into seeds yet.
server log: [04:59:04] [LoginProcessingThread/INFO]: UUID of player kjiang is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [04:59:05] [Server thread/INFO]: kjiang[/xx.xx.xx.xx:xxxxx] logged in with entity id 1041 at ([world]2227.8651337497163, 73.11732772564403, 738.6055491061122) [04:59:37] [Server thread/FATAL]: Error executing task java.util.concurrent.ExecutionException: java.lang.StackOverflowError at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_191] at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_191] at net.minecraft.server.v1_13_R2.SystemUtils.a(SourceFile:200) [spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:896) [spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:417) [spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:831) [spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:729) [spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191] Caused by: java.lang.StackOverflowError at net.minecraft.server.v1_13_R2.World.a(World.java:2634) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.World.triggerEffect(World.java:2624) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.World.setAir(World.java:428) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.Block.a(Block.java:168) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.Block.a(Block.java:122) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.IBlockData.a(SourceFile:245) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.World.notifyAndUpdatePhysics(World.java:407) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.World.setTypeAndData(World.java:362) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.World.setAir(World.java:433) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.Block.a(Block.java:168) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] at net.minecraft.server.v1_13_R2.Block.a(Block.java:122) ~[spigot-vol5dev.jar:git-Spigot-f56e2e7-b634e05] ... (same sections been duplicated multiple times) ... [05:00:01] [Server thread/INFO]: Stopping the server [05:00:01] [Server thread/INFO]: Stopping server |
Comments |
Comment by md_5 [ 27/Jan/19 ] |
Using WorldEdit 7:
1) //set grass errors with stack trace similar to what you report. 2) //fast, //set grass creates grass 3) Breaking that grass causes a stack trace similar to what you report (expected), but does not crash the server. |
Comment by md_5 [ 27/Jan/19 ] |
Still cannot reproduce with worldedit.
1) //set grass turns it into grass blocks
2) //set 31 breaks it immediately
3) //fast, //set 31 creates a series of blocks 4) Breaking that causes a stack trace similar to what you report (expected), but does not crash the server.
Please include concrete reproduction steps. |
Comment by md_5 [ 27/Jan/19 ] |
>I tried with vanilla, and its works fine. Once you //fill the grass and seeds popped up immediately. (just a little bit laggy). and vanilla seems to have a fixed 32768 blocks limitation.
Yes, this is also what happens using /fill on Spigot.
>BUT, the way I actually reproduce it on my server, is by using WorldEdit. Select 2 point in the world (a 100x3x100 region for example). Then "//set grass". After you set it, then you just break one of the "grass" block with your hand, and the server will crashes.
I bet if you open that worldedited world on Vanilla and break a grass block the same crash will happen |
Comment by kjiang [ 27/Jan/19 ] |
I tried with vanilla, and its works fine. Once you //fill the grass and seeds popped up immediately. (just a little bit laggy). and vanilla seems to have a fixed 32768 blocks limitation. BUT, the way I actually reproduce it on my server, is by using WorldEdit. Select 2 point in the world (a 100x3x100 region for example). Then "//set grass". After you set it, then you just break one of the "grass" block with your hand, and the server will crashes. Sorry I didn't mention the WorldEdit at the first place. |
Comment by md_5 [ 26/Jan/19 ] |
This doesn't crash my server, it all pops immediately. |
Comment by md_5 [ 26/Jan/19 ] |
Did you checkvanilla? I expect this would be an issue there too.
Spigot does carry a patch to try and prevent this, so I’m not sure why it isn’t working here. Ultimately due to the recursive implementation of physics it would leave only half of it broken. |
Comment by kjiang [ 26/Jan/19 ] |
Oops... posted it under wrong project... How can I move it to Spigot issue? |