Crash on startup with certain combinations of mods: "SubTree needs at least one child"
magneticflux- opened this issue ยท 14 comments
Describe the bug
When starting with certain mods AND without mixin.debug=true
enabled the game crashes.
Stacktrace from the crash:
java.lang.ExceptionInInitializerError
at net.minecraft.class_4599.method_22999(class_4599.java:35)
at net.minecraft.class_156.method_654(class_156.java:444)
at net.minecraft.class_4599.<init>(class_4599.java:13)
at net.minecraft.class_310.<init>(class_310.java:553)
at net.minecraft.client.main.Main.main(Main.java:198)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.quiltmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:423)
at org.quiltmc.loader.impl.launch.knot.Knot.launch(Knot.java:76)
at org.quiltmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:24)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.multimc.impl.OneSixLauncher.invokeMain(OneSixLauncher.java:104)
at org.multimc.impl.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:175)
at org.multimc.impl.OneSixLauncher.launch(OneSixLauncher.java:185)
at org.multimc.EntryPoint.listen(EntryPoint.java:127)
at org.multimc.EntryPoint.main(EntryPoint.java:57)
Caused by: java.lang.IllegalArgumentException: SubTree needs at least one child
at net.minecraft.class_6544$class_6548.method_38157(class_6544.java:249)
at net.minecraft.class_6544$class_6548$class_6551.<init>(class_6544.java:111)
at net.minecraft.class_6544$class_6548.method_38148(class_6544.java:199)
at net.minecraft.class_6544$class_6548.method_38147(class_6544.java:199)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at net.minecraft.class_6544$class_6548.method_38148(class_6544.java:199)
at net.minecraft.class_6544$class_6548.method_38147(class_6544.java:199)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at net.minecraft.class_6544$class_6548.method_38148(class_6544.java:199)
at net.minecraft.class_6544$class_6548.method_38153(class_6544.java:151)
at net.minecraft.class_6544$class_6547.<init>(class_6544.java:278)
at net.minecraft.class_4766$class_5305.method_38175(class_4766.java:112)
at net.minecraft.class_4766$class_5305.method_39531(class_4766.java:130)
at net.minecraft.class_4766$class_5502.method_31101(class_4766.java:92)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at net.minecraft.class_4766.method_28459(class_4766.java:42)
at com.mojang.datafixers.util.Either$Left.mapBoth(Either.java:33)
at com.mojang.serialization.DataResult.map(DataResult.java:110)
at com.mojang.serialization.MapDecoder$4.decode(MapDecoder.java:94)
at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$decode$1(KeyDispatchCodec.java:67)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$decode$2(KeyDispatchCodec.java:58)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.codecs.KeyDispatchCodec.decode(KeyDispatchCodec.java:56)
at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
at com.mojang.serialization.Decoder.parse(Decoder.java:18)
at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29)
at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$7.decode(RecordCodecBuilder.java:408)
at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$decode$1(KeyDispatchCodec.java:67)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.codecs.KeyDispatchCodec.lambda$decode$2(KeyDispatchCodec.java:58)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.codecs.KeyDispatchCodec.decode(KeyDispatchCodec.java:56)
at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
at com.mojang.serialization.Decoder.parse(Decoder.java:18)
at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29)
at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$3.decode(RecordCodecBuilder.java:249)
at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
at com.mojang.serialization.Decoder.parse(Decoder.java:18)
at com.mojang.serialization.codecs.BaseMapCodec.lambda$decode$2(BaseMapCodec.java:31)
at java.base/java.util.stream.ReduceOps$1ReducingSink.accept(ReduceOps.java:80)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:667)
at com.mojang.serialization.codecs.BaseMapCodec.decode(BaseMapCodec.java:27)
at com.mojang.serialization.codecs.UnboundedMapCodec.lambda$decode$0(UnboundedMapCodec.java:38)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.codecs.UnboundedMapCodec.decode(UnboundedMapCodec.java:38)
at com.mojang.serialization.Decoder.parse(Decoder.java:18)
at com.mojang.serialization.codecs.FieldDecoder.decode(FieldDecoder.java:29)
at com.mojang.serialization.MapCodec$1.decode(MapCodec.java:34)
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$1.decode(RecordCodecBuilder.java:183)
at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107)
at com.mojang.serialization.MapDecoder.lambda$compressedDecode$0(MapDecoder.java:52)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52)
at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91)
at com.mojang.serialization.Decoder$1.decode(Decoder.java:49)
at com.mojang.serialization.Codec$2.decode(Codec.java:71)
at com.mojang.serialization.Decoder.parse(Decoder.java:18)
at net.minecraft.class_5506$class_5507$class_6821.method_42091(class_5506.java:113)
at net.minecraft.class_6900.method_42082(class_6900.java:69)
at net.minecraft.class_6900.method_40407(class_6900.java:36)
at com.mojang.serialization.DataResult.lambda$flatMap$10(DataResult.java:138)
at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
at com.mojang.serialization.DataResult.flatMap(DataResult.java:136)
at net.minecraft.class_6900.method_40404(class_6900.java:36)
at net.minecraft.class_6900$class_6901.method_40409(class_6900.java:94)
at net.minecraft.class_5455.method_30526(class_5455.java:297)
at net.minecraft.class_5455.method_30519(class_5455.java:292)
at net.minecraft.class_6903.method_40413(class_6903.java:32)
at net.minecraft.class_5455.method_40314(class_5455.java:269)
at net.minecraft.class_5455.method_40327(class_5455.java:287)
at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:183)
at net.minecraft.class_1088.<clinit>(class_1088.java:158)
... 21 more
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Thread: Render thread
Stacktrace:
at net.minecraft.class_4599.method_22999(class_4599.java:35)
at net.minecraft.class_156.method_654(class_156.java:444)
at net.minecraft.class_4599.<init>(class_4599.java:13)
at net.minecraft.class_310.<init>(class_310.java:553)
Full log from the crash: latest.log
Checklist
- I am using the official version of the mod.
- I tried the latest development version but the issue persists.
- I searched for similar open issues and could not find an existing bug report on this.
Yep, and with the latest dev build: latest.log
Now it also crashes when passing -Dmixin.debug=true
: latest.log
It isn't only Colormatic that causes the issue either, I just tried with Inspectio, Mouse Wheelie, and Screenshot to Clipboard.
Disabling MixinMultiNoiseBiomeSourcePreset
seems to fix it. Maybe a threading or mod load order issue?
It does not fix it, the crash happened 6/10 times when testing this build.
I tried it on Eclipse Temurin and it still crashes a little over 50% of the time.
Can you try on a clean minecraft instance? I can get minecraft starting up completely fine 8 times in a row.
It was GraalVM, I thought I switched to Temurin but it was still using the old JDK. I can reproduce it in a dev environment now and I'm stepping through in the debugger now.
I can reproduce it in a dev environment now and I'm stepping through in the debugger now.
I think just don't waste time stepping through init code. Debuggers will disable optimizations and once you stepped through the whole thing it will launch just fine.