
Arch API event register is not thread safe, causing random crash
BloCamLimb opened this issue ยท 0 comments
Random crashes can occur if listeners are registered concurrently, especially in parallel loading of (Neo)Forge. This bug exists at least in architectury api from MC 1.20 to 1.21.5. In contrast, (Neo)Forge's event bus and Fabric's events are both thread-safe.
My game just crashed as following, with FTBLibrary, randomly:
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 0
Stacktrace:
at java.util.ArrayList.add(ArrayList.java:484) ~[?:?] {re:mixin}
at java.util.ArrayList.add(ArrayList.java:496) ~[?:?] {re:mixin}
at dev.architectury.event.EventFactory$EventImpl.register(EventFactory.java:217) ~[architectury-9.2.14-forge.jar%23425!/:?] {re:classloading}
at dev.ftb.mods.ftblibrary.FTBLibrary.<init>(FTBLibrary.java:27) ~[ftb-library-forge-2001.1.4.jar%23498!/:2001.1.4] {re:classloading}
at dev.ftb.mods.ftblibrary.forge.FTBLibraryForge.<init>(FTBLibraryForge.java:12) ~[ftb-library-forge-2001.1.4.jar%23498!/:2001.1.4] {re:classloading}
at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:77) ~[javafmllanguage-1.20.1-47.3.22.jar%23675!/:?] {}
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:124) ~[fmlcore-1.20.1-47.3.22.jar%23674!/:?] {re:mixin}
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}