Status Update
Comments
lo...@gradle.com <lo...@gradle.com> #2
Thank you for the report. This looks looks like something in the class file that our class file verification cannot handle. The failing_bytecode.txt
does not have all the details, so will it be possible for you to share the binary class file for the class kbbbbb.kggkkk
? You can share it privately with javap
with the -v
option (javap -v -cp <the jar> kbbbbb.kggkkk
.
The deobfuscated R8 stack trace is:
Caused by: com.android.tools.r8.errors.Unreachable: Invalid descriptor char 'N'
at com.android.tools.r8.ir.code.MemberType.fromTypeDescriptorChar(MemberType.java:98)
at com.android.tools.r8.ir.code.MemberType.fromDexType(MemberType.java:103)
at com.android.tools.r8.graph.CfCode.isAssignable(CfCode.java:918)
at com.android.tools.r8.graph.CfCode.lambda$isAssignablePredicate$8(CfCode.java:887)
at com.android.tools.r8.cf.code.CfFrameVerificationHelper.canBeAssigned(CfFrameVerificationHelper.java:375)
at com.android.tools.r8.cf.code.CfFrameVerificationHelper.verifyStackIsAssignable(CfFrameVerificationHelper.java:320)
at com.android.tools.r8.cf.code.CfFrameVerificationHelper.verifyIsAssignable(CfFrameVerificationHelper.java:264)
at com.android.tools.r8.cf.code.CfFrameVerificationHelper.verifyFrame(CfFrameVerificationHelper.java:213)
at com.android.tools.r8.cf.code.CfFrameVerificationHelper.verifyFrame(CfFrameVerificationHelper.java:209)
at com.android.tools.r8.cf.code.CfFrameVerificationHelper.verifyFrameAndSet(CfFrameVerificationHelper.java:169)
at com.android.tools.r8.cf.code.CfFrame.evaluate(CfFrame.java:454)
at com.android.tools.r8.graph.CfCode.verifyFrames(CfCode.java:782)
at com.android.tools.r8.graph.CfCode.verifyFramesOrRemove(CfCode.java:412)
at com.android.tools.r8.graph.CfCode.buildIR(CfCode.java:386)
at com.android.tools.r8.graph.LazyCfCode.buildIR(LazyCfCode.java:215)
at com.android.tools.r8.graph.ProgramMethod.buildIR(ProgramMethod.java:25)
at com.android.tools.r8.ir.conversion.IRConverter.rewriteCodeInternal(IRConverter.java:1122)
at com.android.tools.r8.ir.conversion.IRConverter.lambda$rewriteCode$13(IRConverter.java:1088)
at com.android.tools.r8.utils.ExceptionUtils.withOriginAndPositionAttachmentHandler(ExceptionUtils.java:220)
at com.android.tools.r8.ir.conversion.IRConverter.rewriteCode(IRConverter.java:1085)
at com.android.tools.r8.ir.conversion.IRConverter.convertMethod(IRConverter.java:535)
at com.android.tools.r8.ir.conversion.IRConverter.lambda$convertMethods$2(IRConverter.java:516)
at com.android.tools.r8.graph.DexProgramClass.lambda$forEachProgramMethodMatching$1(DexProgramClass.java:154)
at com.android.tools.r8.graph.MethodCollection.lambda$forEachMethodMatching$0(MethodCollection.java:96)
at com.android.tools.r8.graph.MethodCollectionBacking.lambda$forEachMethod$0(MethodCollectionBacking.java:51)
at com.android.tools.r8.graph.MethodArrayBacking.traverse(MethodArrayBacking.java:65)
at com.android.tools.r8.graph.MethodCollectionBacking.forEachMethod(MethodCollectionBacking.java:48)
at com.android.tools.r8.graph.MethodCollectionBacking.forEachMethod(MethodCollectionBacking.java:44)
at com.android.tools.r8.graph.MethodCollection.forEachMethodMatching(MethodCollection.java:93)
at com.android.tools.r8.graph.DexProgramClass.forEachProgramMethodMatching(DexProgramClass.java:153)
at com.android.tools.r8.ir.conversion.IRConverter.convertMethods(IRConverter.java:511)
at com.android.tools.r8.utils.ThreadUtils.lambda$processItems$4(ThreadUtils.java:59)
at com.android.tools.r8.utils.ThreadUtils.lambda$processItems$6(ThreadUtils.java:84)
at com.android.tools.r8.utils.ThreadUtils.lambda$processItemsWithResults$2(ThreadUtils.java:51)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:322)
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:66)
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:36)
at com.android.tools.r8.utils.ThreadUtils.lambda$processItemsWithResults$3(ThreadUtils.java:51)
at com.android.tools.r8.utils.ThreadUtils.processItemsWithResults(ThreadUtils.java:48)
at com.android.tools.r8.utils.ThreadUtils.processItems(ThreadUtils.java:81)
at com.android.tools.r8.utils.ThreadUtils.processItems(ThreadUtils.java:67)
at com.android.tools.r8.utils.ThreadUtils.processItems(ThreadUtils.java:59)
at com.android.tools.r8.ir.conversion.IRConverter.convert(IRConverter.java:476)
at com.android.tools.r8.D8.run(D8.java:209)
at com.android.tools.r8.D8.lambda$run$1(D8.java:119)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:70)
at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:54)
at com.android.tools.r8.D8.run(D8.java:116)
at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:116)
This is the exception:
xa...@google.com <xa...@google.com>
je...@google.com <je...@google.com> #3
Sent over the class file via email, thanks!
lo...@gradle.com <lo...@gradle.com> #4
Thank you for the file - was able to reproduce it and have a fix ready. Will report back when the fix has been backported to 2.2
je...@google.com <je...@google.com> #5
Branch: master
commit e264cf81d23c15fa6295f979973b40b59ea2be81
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Nov 20 19:03:26 2020
Add test for invalid bytecode expecting null in stackmap
Bug: 173598082
Change-Id: I0b322eab037f7e4f73175559d6880438232cb831
A src/test/java/com/android/tools/r8/cf/stackmap/SwitchStackFrameFallThroughTest.java
je...@google.com <je...@google.com>
bu...@google.com <bu...@google.com>
sa...@google.com <sa...@google.com>
bu...@google.com <bu...@google.com>
bu...@google.com <bu...@google.com> #6
Branch: master
commit 7bb8bc8b32c44ad51ca7cf5d77527fe208f292a8
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Mon Nov 23 11:36:44 2020
Set no frame after seeing a CF switch
Bug: 173598082
Change-Id: Id6bd35f38bb10ac7ed5370ef3af06dbff8805f36
M src/main/java/com/android/tools/r8/cf/code/CfSwitch.java
M src/test/java/com/android/tools/r8/cf/stackmap/SwitchStackFrameFallThroughTest.java
bu...@google.com <bu...@google.com> #7
Branch: 2.2
commit 01ec2fa75e4147a7193f0871c3b5bfb70fa942f0
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Nov 24 10:58:51 2020
Version 2.2.45
Bug: 173678465
Bug: 173598082
Change-Id: I499102f282857851061cd199be11c16703fdaf44
M src/main/java/com/android/tools/r8/Version.java
Description
Instead, the property should be annotated with `@Nested` and the `ApkData` type's getters should be annotated with `@Input` etc. annotations.