The bug
When using a command with many parts (execute
and a few hundred as @e
)then the game instantly crashes. I think it is caused by trying to highlight all the syntax.
How to reproduce
Give yourself a command block and put the text from the
[media] into it. Now when you try to put a space behind the execute
the game crashes.
Crash report
1.13.1\: [^crash-2018-10-06_14.55.29-client.txt]
Description: charTyped event handler
java.lang.StackOverflowError: charTyped event handler
at ds.a(SourceFile:130)
at ds.s(SourceFile:420)
at cb.a(SourceFile:100)
at cb.parse(SourceFile:28)
at com.mojang.brigadier.tree.ArgumentCommandNode.parse(ArgumentCommandNode.java:56)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:190)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:218)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:214)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:218)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:214)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:218)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:214)
...
Attachments
Comments 10
Can confirm in 1.17.1
Slightly shorter stacktrace this time:
java.lang.StackOverflowError: charTyped event handler
at java.base/java.util.HashMap.putAll(HashMap.java:785)
at com.mojang.brigadier.context.CommandContextBuilder.copy(CommandContextBuilder.java:73)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:361)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:388)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:392)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:388)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:392)
[...]
Also note that the command block's contents is cleared after the crash
Affects 1.18.1. Note that since 1.18, the command block is no longer cleared, but returned to the state it was in before the space behind execute
was entered.
Affects 1.18.2. Latest stacktrace:
java.lang.StackOverflowError: charTyped event handler
at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520)
at fq.t(SourceFile:422)
at dw.a(SourceFile:100)
at dw.parse(SourceFile:28)
at com.mojang.brigadier.tree.ArgumentCommandNode.parse(ArgumentCommandNode.java:59)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:365)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:392)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:388)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:392)
[...]
Affects 1.19
java.lang.StackOverflowError: charTyped event handler
at java.base/java.util.HashMap.hash(HashMap.java:338)
at java.base/java.util.HashMap.getNode(HashMap.java:568)
at java.base/java.util.LinkedHashMap.get(LinkedHashMap.java:441)
at com.mojang.brigadier.tree.CommandNode.getRelevantNodes(CommandNode.java:161)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:357)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:388)
at com.mojang.brigadier.CommandDispatcher.parseNodes(CommandDispatcher.java:392)
[...]
The crash report also helpfully included a workaround:
// Don't do that.
I would like to request ownership of this report.