Status Update
Comments
ch...@google.com <ch...@google.com> #2
Thanks for reporting this. Would it be possible for you to share a zip dump of the inputs to R8, which includes the class files, keep rules, etc. of the app? This should allow us to reproduce and diagnose the issue. You can share this privately with
You can generate a dump by building with:
./gradlew assembleRelease -Dcom.android.tools.r8.dumpinputtodirectory=/path/to/dumps/ --no-daemon
See also
ch...@google.com <ch...@google.com> #3
Thanks for sharing the dump. I was able to reproduce the issue and will start diagnosing what is causing this.
bl...@lyft.com <bl...@lyft.com> #4
Awesome! Let me know if there are any patches that I can import and test against our repo.
ch...@google.com <ch...@google.com> #5
This should be fixed with
bl...@lyft.com <bl...@lyft.com> #6
I pulled this patch in and can confirm that our apk now works. Thanks for the quick turn around!
ap...@google.com <ap...@google.com> #7
Branch: main
commit 9c9bdc44e808cf2443b5ae49ea6a8941414e747c
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Wed Feb 08 08:10:51 2023
Avoid double-lens application to field instructions in backend
Bug:
Change-Id: I0b5235619c0dc3773b82d6032a5755006c01d4cb
M src/main/java/com/android/tools/r8/dex/DexOutputBuffer.java
M src/main/java/com/android/tools/r8/dex/FileWriter.java
M src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java
M src/main/java/com/android/tools/r8/dex/code/DexConstClass.java
M src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java
M src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java
M src/main/java/com/android/tools/r8/dex/code/DexConstString.java
M src/main/java/com/android/tools/r8/dex/code/DexFillArrayDataPayload.java
M src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
M src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java
M src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java
M src/main/java/com/android/tools/r8/dex/code/DexInitClass.java
M src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java
M src/main/java/com/android/tools/r8/dex/code/DexInstruction.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java
M src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java
M src/main/java/com/android/tools/r8/dex/code/DexNewArray.java
M src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java
M src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java
M src/main/java/com/android/tools/r8/dex/code/DexPackedSwitchPayload.java
M src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java
M src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java
M src/main/java/com/android/tools/r8/dex/code/DexSparseSwitchPayload.java
M src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
M src/main/java/com/android/tools/r8/graph/DexCode.java
M src/main/java/com/android/tools/r8/graph/DexWritableCode.java
M src/main/java/com/android/tools/r8/graph/NestedGraphLens.java
M src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
M src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
M src/main/java/com/android/tools/r8/horizontalclassmerging/code/SyntheticInitializerConverter.java
ap...@google.com <ap...@google.com> #8
Branch: 4.0
commit 2fc27f8cef33c22525c585e5c65bf3d67a18755a
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Thu Feb 09 11:19:09 2023
Version 4.0.53
Bug:
Bug:
Change-Id: I62f98b9723358310ade7f2bd5f8e589fa91c8ab6
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #9
Branch: 4.0
commit 88dc0fb1128b5734c97809ebb9d7b1c954b9966e
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Thu Feb 09 11:17:56 2023
Avoid double-lens application to field instructions in backend
Bug:
Change-Id: I0b5235619c0dc3773b82d6032a5755006c01d4cb
M src/main/java/com/android/tools/r8/dex/DexOutputBuffer.java
M src/main/java/com/android/tools/r8/dex/FileWriter.java
M src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java
M src/main/java/com/android/tools/r8/dex/code/DexConstClass.java
M src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java
M src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java
M src/main/java/com/android/tools/r8/dex/code/DexConstString.java
M src/main/java/com/android/tools/r8/dex/code/DexFillArrayDataPayload.java
M src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
M src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java
M src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java
M src/main/java/com/android/tools/r8/dex/code/DexInitClass.java
M src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java
M src/main/java/com/android/tools/r8/dex/code/DexInstruction.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java
M src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java
M src/main/java/com/android/tools/r8/dex/code/DexNewArray.java
M src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java
M src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java
M src/main/java/com/android/tools/r8/dex/code/DexPackedSwitchPayload.java
M src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java
M src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java
M src/main/java/com/android/tools/r8/dex/code/DexSparseSwitchPayload.java
M src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
M src/main/java/com/android/tools/r8/graph/DexCode.java
M src/main/java/com/android/tools/r8/graph/DexWritableCode.java
M src/main/java/com/android/tools/r8/graph/NestedGraphLens.java
M src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
M src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
M src/main/java/com/android/tools/r8/horizontalclassmerging/code/SyntheticInitializerConverter.java
ap...@google.com <ap...@google.com> #10
Branch: 8.0
commit 376af144cf327f0f2b0a2de0a38939a59216a08d
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Thu Feb 09 11:25:18 2023
Version 8.0.29
Bug:
Bug:
Change-Id: I994d406bae7514482ffdf2ef10f092b5a96cc328
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #11
Branch: 8.0
commit ecb0cace90beb30e2ca7f4e4c3a324584a4c102e
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Thu Feb 09 11:24:15 2023
Avoid double-lens application to field instructions in backend
Bug:
Change-Id: I0b5235619c0dc3773b82d6032a5755006c01d4cb
M src/main/java/com/android/tools/r8/dex/DexOutputBuffer.java
M src/main/java/com/android/tools/r8/dex/FileWriter.java
M src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java
M src/main/java/com/android/tools/r8/dex/code/DexConstClass.java
M src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java
M src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java
M src/main/java/com/android/tools/r8/dex/code/DexConstString.java
M src/main/java/com/android/tools/r8/dex/code/DexFillArrayDataPayload.java
M src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
M src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java
M src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java
M src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java
M src/main/java/com/android/tools/r8/dex/code/DexInitClass.java
M src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java
M src/main/java/com/android/tools/r8/dex/code/DexInstruction.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java
M src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java
M src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java
M src/main/java/com/android/tools/r8/dex/code/DexNewArray.java
M src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java
M src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java
M src/main/java/com/android/tools/r8/dex/code/DexPackedSwitchPayload.java
M src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java
M src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java
M src/main/java/com/android/tools/r8/dex/code/DexSparseSwitchPayload.java
M src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
M src/main/java/com/android/tools/r8/graph/DexCode.java
M src/main/java/com/android/tools/r8/graph/DexWritableCode.java
M src/main/java/com/android/tools/r8/graph/NestedGraphLens.java
M src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
M src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
M src/main/java/com/android/tools/r8/horizontalclassmerging/code/SyntheticInitializerConverter.java
ch...@google.com <ch...@google.com> #12
This should now be fixed in R8 versions 4.0.53 and 8.0.29 - and next week in 8.1.19-dev.
Description
We are seeing this crash in our signed release builds. Dev builds where -dontoptimize is enabled work fine.
We are using Kotlin 1.7.10, and are able to repro this and similar "Verifier rejected class ... .<init>(...)" crashes in different classes across our repo using R8 4.0.48 as well as HEAD (6dc561aa43a09737a114a0b233d9476b4ec902e5).
Examples: