Status Update
Comments
se...@google.com <se...@google.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:
to...@gmail.com <to...@gmail.com> #3
Sent over the class file via email, thanks!
se...@google.com <se...@google.com>
va...@google.com <va...@google.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
to...@gmail.com <to...@gmail.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
to...@gmail.com <to...@gmail.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
to...@gmail.com <to...@gmail.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
to...@gmail.com <to...@gmail.com> #8
Branch: 2.2
commit f0d405e7368cfb096462445b6f2c5feb4b985d70
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Nov 24 10:57:00 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
ap...@google.com <ap...@google.com> #9
Branch: 2.2
commit 49c11952c279ba5b113bd099587e7f6cd62dddc0
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Nov 24 10:56:22 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
be...@gmail.com <be...@gmail.com> #10
This issue should be resolved in version 2.2.45. You can try it out by adding the following dependency in your top-level build.gradle file:
buildscript {
repositories {
maven {
url 'https://storage.googleapis.com/r8-releases/raw'
}
}
dependencies {
classpath 'com.android.tools:r8:2.2.45' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
Description
Jetpack Compose version: Last snapshot 11763555 (So containshttps://github.com/androidx/androidx/commit/33c32f65dd7879954cfa7a46a76eb959c977e291 )
Material Library Version (M2, M3 or Both?): M3
Material Compose component used: ModalBottomSheet
Applying content padding does not work for modalbottomsheets and status bar.
Try to build a proper modalbottomsheet that properly take in account the status bar when the sheet is longer than the screen.
This is currently not possible without setting contentColor to transparent and manually apply the shape to the header we use, completely breaking the purpose of the API that expose the color and the shape and should work.