Concurrent Chunk Management Engine (Fabric)

Concurrent Chunk Management Engine (Fabric)

231k Downloads

Crash on startup with certain combinations of mods: "SubTree needs at least one child"

magneticflux- opened this issue ยท 14 comments

commented

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.
commented

Can you try reproduce this on fabric-loader instead of quilt-loader?

commented

Yep, and with the latest dev build: latest.log

commented

Now it also crashes when passing -Dmixin.debug=true: latest.log

commented

It isn't only Colormatic that causes the issue either, I just tried with Inspectio, Mouse Wheelie, and Screenshot to Clipboard.

commented

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.

commented

This is pretty weird as I can have Colormatic 3.1.2+mc.1.19 and c2me 0.2.0+alpha.8.16 without issues.

image
image

commented

I would suggest trying a normal HotSpot VM instead of GraalVM EE.

commented

I tried it on Eclipse Temurin and it still crashes a little over 50% of the time.

commented

Can you try on a clean minecraft instance? I can get minecraft starting up completely fine 8 times in a row.

commented

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.

commented

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.

commented

Closing since this is a GraalVM EE specific issue.

commented

Can reproduce on a full vanilla instance during worldgen; not a C2ME issue.

commented

I can confirm this is a Graal issue. Had this lots of times. Usually solved by trying again (it has like a 40% chance to appear) or not using EE.