Apologies in advance if its already logged, couldn’t see it.
consoleapplication888.zip (226.4 KB)
See the attached swift/cooper project. This is a distillation of a problem from a real project.
import java.util class MyClass { var sum1: UInt16 = 0 var sum2: UInt16 = 0 } print("The magic happens here.")
- Compile the code into a jar
- Run the Android D8 dexer over the jar, as it would in an android gradle script:
- It fails with an ArrayIndexOfBounds, looking at some type annotation
- Happens also with use of other UInt types, and with them as local var as well as properties
- Doesn’t happen with signed types
thebeast:Debug jon$ ~/.android-sdk/build-tools/28.0.3/d8 consoleapplication888.jar Compilation failed with an internal error. java.lang.ArrayIndexOutOfBoundsException: 2304 at com.android.tools.r8.org.objectweb.asm.ClassReader.readLabel(ClassReader.java:2355) at com.android.tools.r8.org.objectweb.asm.ClassReader.createLabel(ClassReader.java:2373) at com.android.tools.r8.org.objectweb.asm.ClassReader.readTypeAnnotations(ClassReader.java:1782) at com.android.tools.r8.org.objectweb.asm.ClassReader.readCode(ClassReader.java:1293) at com.android.tools.r8.org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1126) at com.android.tools.r8.org.objectweb.asm.ClassReader.accept(ClassReader.java:698) at com.android.tools.r8.org.objectweb.asm.ClassReader.accept(ClassReader.java:500) at com.android.tools.r8.graph.JarClassFileReader.read(JarClassFileReader.java:67) at com.android.tools.r8.dex.ApplicationReader$ClassReader.lambda$readClassSources$1(ApplicationReader.java:231) at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) thebeast:Debug jon$
This was on android build tools 28.0.3, Fire 2399