Skip to content

[1.20.1] World Gen Crash with C2ME (Concurrency/Thread Safety Issue) #1127

@Campione01

Description

@Campione01

Description The game crashes during world generation (Feature Placement) when Dynamic Trees is installed alongside C2ME (Concurrent Chunk Management Engine) in a Sinytra Connector environment.

The crash is a ClassCastException within a HashMap occurring on a C2ME worker thread. This suggests a race condition where DynamicTreeFeature is accessing or modifying a non-thread-safe collection while C2ME is generating chunks in parallel.

Steps to Reproduce

Install Minecraft 1.20.1 (Forge/Sinytra Connector).

Install C2ME (Fabric version via Connector).

Install Dynamic Trees (Forge version).

Create a new world or generate new chunks.

The game crashes/servers stops with an exception in DynamicTreeFeature.

Crash Log / Stack Trace The crash occurs in com.ferreusveritas.dynamictrees.worldgen.DynamicTreeFeature. Relevant section from the crash report:

Plaintext
Time: 2026-01-24 19:41:30
Description: Feature placement

java.lang.ClassCastException: class java.util.HashMap$Node cannot be cast to class java.util.HashMap$TreeNode
at java.util.HashMap$TreeNode.moveRootToFront(HashMap.java:1995)
at java.util.HashMap$TreeNode.treeify(HashMap.java:2111)
at java.util.HashMap.treeifyBin(HashMap.java:779)
at java.util.HashMap.putVal(HashMap.java:651)
at java.util.HashMap.put(HashMap.java:619)
...
at com.ferreusveritas.dynamictrees.worldgen.DynamicTreeFeature.m_5976_(DynamicTreeFeature.java:76) ~[DynamicTrees-1.20.1-1.4.10.jar%23497!/:?] {re:classloading}
...
at com.ishland.c2me.opts.scheduling.mixin.common.task.Mixinbind_IGuiGraphics.handler$zmn000$c2me_opts_scheduling$wrapExecutor(Mixinbind_IGuiGraphics.java:1040) ~[c2me-fabric-mc1.20.1-0.2.0+alpha.11.20.26.9.jar%23385!/:?]
Environment

Minecraft Version: 1.20.1

Forge Version: 47.4.15 (Using Sinytra Connector)

Dynamic Trees Version: 1.20.1-1.4.10

C2ME Version: 0.2.0+alpha.11 (Fabric)

Additional Context: I understand that running C2ME on Forge via Connector is a complex setup. However, this appears to be a thread-safety issue in DynamicTreeFeature. I am reporting this in case a synchronization fix can be implemented, or to request a config option to disable Dynamic Trees generation optimizations if they conflict with multithreaded chunk generators.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions