ModCoderPack/MCPBot-Issues

FernFlower crashing on decompile MCP 9.40 MC 1.14.4

Closed this issue · 7 comments

FernFlower crashes while trying to decompile MC 1.14.4.

The config I have used is from: https://files.minecraftforge.net/maven/de/oceanlabs/mcp/mcp_config/1.14.4-20190719.225934/mcp_config-1.14.4-20190719.225934.zip

I have already tried giving FF more memory and I am using the Java 8u221 x86.

This is what I get back from running decompile.bat:

`== MCP 9.40 (data: 9.40, client: 1.14.4, server: 1.14.4) ==
"scalac" is not found on the PATH. Scala files will not be recompiled

found ff, ff patches, srgs, name csvs, doc csvs, param csvs, astyle, astyle config, rg, ss

!! Modified jar detected. Unpredictable results !!
== Decompiling client using fernflower ==

Creating SRGs
Applying SpecialSource
Applying MCInjector
Creating renamed srg
Filtering classes
Decompiling
'"C:\Program Files\Java\jdk1.8.0_102\bin\java" -Xmx4G -Xmn4G -jar runtime\bin\fernflower.jar -din=1 -rbr=1 -dgs=1 -asc=1 -rsy=1 -iec=1 -jvn=1 -log=DEBUG "-e=jars\libraries\net/java/jinput\jinput\2.0.5\jinput-2.0.5.jar" "-e=jars\libraries\org/lwjgl\lwjgl-stb\3.2.2\lwjgl-stb-3.2.2.jar" "-e=jars\libraries\com/ibm/icu\icu4j-core-mojang\51.2\icu4j-core-mojang-51.2.jar" "-e=jars\libraries\org/apache/httpcomponents\httpcore\4.3.2\httpcore-4.3.2.jar" "-e=jars\libraries\org/apache/logging/log4j\log4j-api\2.8.1\log4j-api-2.8.1.jar" "-e=jars\libraries\org/apache/commons\commons-lang3\3.5\commons-lang3-3.5.jar" "-e=jars\libraries\org/lwjgl\lwjgl\3.2.2\lwjgl-3.2.2-natives-windows.jar" "-e=jars\libraries\net/java/jutils\jutils\1.0.0\jutils-1.0.0.jar" "-e=jars\libraries\net/java/dev/jna\jna\4.4.0\jna-4.4.0.jar" "-e=jars\libraries\org/lwjgl\lwjgl-stb\3.2.2\lwjgl-stb-3.2.2-natives-windows.jar" "-e=jars\libraries\net/sf/jopt-simple\jopt-simple\5.0.3\jopt-simple-5.0.3.jar" "-e=jars\libraries\com/mojang\text2speech\1.11.3\text2speech-1.11.3.jar" "-e=jars\libraries\com/mojang\datafixerupper\2.0.24\datafixerupper-2.0.24.jar" "-e=jars\libraries\com/google/guava\guava\21.0\guava-21.0.jar" "-e=jars\libraries\oshi-project\oshi-core\1.1\oshi-core-1.1.jar" "-e=jars\libraries\org/lwjgl\lwjgl-jemalloc\3.2.2\lwjgl-jemalloc-3.2.2.jar" "-e=jars\libraries\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar" "-e=jars\libraries\org/apache/commons\commons-compress\1.8.1\commons-compress-1.8.1.jar" "-e=jars\libraries\com/mojang\text2speech\1.11.3\text2speech-1.11.3-natives-windows.jar" "-e=jars\libraries\it/unimi/dsi\fastutil\8.2.1\fastutil-8.2.1.jar" "-e=jars\libraries\com/mojang\javabridge\1.0.22\javabridge-1.0.22.jar" "-e=jars\libraries\net/java/dev/jna\platform\3.4.0\platform-3.4.0.jar" "-e=jars\libraries\commons-codec\commons-codec\1.10\commons-codec-1.10.jar" "-e=jars\libraries\org/apache/httpcomponents\httpclient\4.3.3\httpclient-4.3.3.jar" "-e=jars\libraries\com/mojang\patchy\1.1\patchy-1.1.jar" "-e=jars\libraries\org/lwjgl\lwjgl-opengl\3.2.2\lwjgl-opengl-3.2.2.jar" "-e=jars\libraries\org/lwjgl\lwjgl-jemalloc\3.2.2\lwjgl-jemalloc-3.2.2-natives-windows.jar" "-e=jars\libraries\org/lwjgl\lwjgl-glfw\3.2.2\lwjgl-glfw-3.2.2.jar" "-e=jars\libraries\com/mojang\brigadier\1.0.17\brigadier-1.0.17.jar" "-e=jars\libraries\org/lwjgl\lwjgl-opengl\3.2.2\lwjgl-opengl-3.2.2-natives-windows.jar" "-e=jars\libraries\org/lwjgl\lwjgl\3.2.2\lwjgl-3.2.2.jar" "-e=jars\libraries\commons-io\commons-io\2.5\commons-io-2.5.jar" "-e=jars\libraries\com/mojang\authlib\1.5.25\authlib-1.5.25.jar" "-e=jars\libraries\com/google/code/gson\gson\2.8.0\gson-2.8.0.jar" "-e=jars\libraries\org/lwjgl\lwjgl-glfw\3.2.2\lwjgl-glfw-3.2.2-natives-windows.jar" "-e=jars\libraries\org/lwjgl\lwjgl-openal\3.2.2\lwjgl-openal-3.2.2.jar" "-e=jars\libraries\org/apache/logging/log4j\log4j-core\2.8.1\log4j-core-2.8.1.jar" "-e=jars\libraries\org/lwjgl\lwjgl-openal\3.2.2\lwjgl-openal-3.2.2-natives-windows.jar" "-e=jars\libraries\io/netty\netty-all\4.1.25.Final\netty-all-4.1.25.Final.jar" temp/minecraft_ff_in.jar temp\src\minecraft' failed : 1
Decompile failed
Press any key to continue . . .`

Thanks in advance for any help.

Don't use MCP, it's obsolete.

Don't use MCP, it's obsolete.

Then what am I supposed to use?

So after looking at the logs for FF I found that this is caused by a IndexOutOfBoundsException:

15:44:33 - > Decompiling 15:44:40 - Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 10, Size: 8 15:44:40 - at java.util.ArrayList.rangeCheck(ArrayList.java:653) 15:44:40 - at java.util.ArrayList.get(ArrayList.java:429) 15:44:40 - at org.jetbrains.java.decompiler.struct.consts.ConstantPool.getConstant(ConstantPool.java:183) 15:44:40 - at org.jetbrains.java.decompiler.struct.consts.ConstantPool.getPrimitiveConstant(ConstantPool.java:187) 15:44:40 - at org.jetbrains.java.decompiler.struct.consts.PrimitiveConstant.resolveConstant(PrimitiveConstant.java:80) 15:44:40 - at org.jetbrains.java.decompiler.struct.consts.ConstantPool.<init>(ConstantPool.java:109) 15:44:40 - at org.jetbrains.java.decompiler.struct.StructClass.<init>(StructClass.java:84) 15:44:40 - at org.jetbrains.java.decompiler.struct.StructClass.<init>(StructClass.java:72) 15:44:40 - at org.jetbrains.java.decompiler.struct.StructContext.addArchive(StructContext.java:159) 15:44:40 - at org.jetbrains.java.decompiler.struct.StructContext.addSpace(StructContext.java:100) 15:44:40 - at org.jetbrains.java.decompiler.struct.StructContext.addSpace(StructContext.java:78) 15:44:40 - at org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler.addSpace(ConsoleDecompiler.java:130) 15:44:40 - at org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler.main(ConsoleDecompiler.java:93)

This appears to be caused by the while loop not checking to keep the index within range as shown below org.jetbrains.java.decompiler.struct.consts.ConstPool. at line 108.

for (BitSet pass : nextPass) {
      int idx = 0;
      while ((idx = pass.nextSetBit(idx + 1)) > 0) {
        ((PooledConstant)this.pool.get(idx)).resolveConstant(this);
      }
    } 

This appears to have already been fixed in the master of https://github.com/ModCoderPack/FernFlower. So all that is needed is an update of the packaged FernFlower jar.

You're supposed to use Forge or Fabric.

MCP as a toolchain is dead, and thus not supported.