[SPIGOT-2858] StackOverflow upon shift clicking an item into a custom inventory Created: 29/Nov/16  Updated: 26/Feb/17  Resolved: 29/Nov/16

Status: Closed
Project: Spigot
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Anonymous Chicken Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: Inventory
Environment:

Java 8, Arch Linux


Issue Links:
Duplicate
is duplicated by SPIGOT-3089 StackOverflowError occurring whilst S... Resolved
Plugin: N/A

 Description   

This has been reported in the past, but I couldn't find a way to move it back to the top, and it was never assigned to anyone. When you create a custom inventory (of I assume to be just about any type, although I've only tested workbench, dropper, and dispenser) and a player shift clicks an item into it, a StackOverflowError is thrown.

 

Caused by: java.lang.StackOverflowError
 at java.util.HashMap.putVal(HashMap.java:628) ~[?:1.8.0_112]
 at java.util.HashMap.put(HashMap.java:611) ~[?:1.8.0_112]
 at net.minecraft.server.v1_11_R1.NBTTagCompound.setString(SourceFile:134) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.ItemStack.save(ItemStack.java:282) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.ItemStack.<init>(ItemStack.java:66) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.ItemStack.cloneItemStack(ItemStack.java:444) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:252) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:254) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]
 at net.minecraft.server.v1_11_R1.Container.a(Container.java:430) ~[spigot-1.11.jar:git-Spigot-f950f8e-c91ca4a]

The last 2 lines seem to recursively call each other, causing the error. The server doesn't crash, but any plugins handling the custom inventory seem to stop being able to do anything do it.



 Comments   
Comment by Anonymous Chicken [ 29/Nov/16 ]

What you should do is cancel the event and print a warning in console, or something along those lines.

Comment by md_5 [ 29/Nov/16 ]

This is one of those issues that is essentially impossible to fix.
Because we can't associate a fake inventory with a real inventory, we need to create our own inventory.
Now the problem is that each type of inventory has different semantics on shift clicking (what is valid in what slot etc etc). It would be unworkable to reimplement the shift clicking logic for each type of inventory.

Comment by Anonymous Chicken [ 29/Nov/16 ]

Well, the idea was to get it noticed, I couldn't find a way to bump that one

Comment by Black Hole [ 29/Nov/16 ]

Creating duplicates won't get an issue fixed any sooner.

Comment by Anonymous Chicken [ 29/Nov/16 ]

I know it's duplicate, and pointed it out in the description, but that issue has no assignee and hasn't been fixed.

Comment by Black Hole [ 29/Nov/16 ]

SPIGOT-1107

Generated at Sat Dec 13 13:43:48 UTC 2025 using Jira 10.3.13#10030013-sha1:56dd970ae30ebfeda3a697d25be1f6388b68a422.