Create: Steam 'n' Rails

Create: Steam 'n' Rails

20M Downloads

Concurrency crash on startup

NielsPilgaard opened this issue · 7 comments

commented

Relayed from mekanism/Mekanism#7827 & EnigmaticaModpacks/Enigmatica9#530

Most relevant section:

I think the error occurs as a result of a mod injecting a modlauncher plugin service during mod construction. FML invokes mod constructors in parallel, and if the mod injects the plugin while modlauncher is preparing to transform another class, a CME is thrown.

After a github search, I found a mod that perfectly matches this scenario and also happens to be installed in your instance: Create: Steam 'n' Rails. See their injection code here. Advice for Steam n Rails maintainers: please perform injection in a transformation service or mixin plugin, before the transformable layer is even created. CC @techno-sam @IThundxr

commented

Do you have a rough estimate on when you'll be releasing 1.4.4? The next update of Enigmatica 9 is dependant on it :)

commented

Do you have a rough estimate on when you'll be releasing 1.4.4? The next update of Enigmatica 9 is dependant on it :)

So this depends on whenever create fabric releases but.... for create fabric to release (which is ready) it needs a Quilt Fabric API update that includes the new model api but thats blocked by 2 PRs but hopefully soonish that should be done

if you really need forge releases you can get them off the maven over here but these are untested and could have bugs etc

commented

Alrighty, thanks 👍

commented

So after looking at the actual transformer code, I see you only transform a single class. Therefore there is no need for a launch plugin or injection hacks at all.

The easiest way to do this is without dealing with Forge JS coremods is to register a mixin config plugin, and then applying the transformation in either preApply or postApply. These plugin methods are wired up from mixin's launch service so the provided ClassNode will be exactly the same, no need to worry about having to adjust the transformer code.

commented

Thanks for the info!
Does the mixin config plugin fire preApply/postApply even if no mixins target the relevant class?

commented

I don't think so, but defining an empty mixin for the class should do it.

commented

Yep, that worked! Had to add a method into the mixin to get it to actually apply, but all good now.
Will be fixed in 1.4.4