Fixed
Status Update
Comments
ch...@google.com <ch...@google.com> #2
Thanks for the report. Would it be possible for you to share the generated APK? If you prefer to share it privately you can send it to christofferqa@google.com or sgjesse@google.com.
to...@gmail.com <to...@gmail.com> #3
APKs sent
js...@google.com <js...@google.com>
js...@google.com <js...@google.com> #4
.class public abstract Lb4/c/b/a/a;
.super Ljava/lang/Object;
.source "outline" //https://r8.googlesource.com/r8/+/refs/heads/master/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java#1343
...
# around line 623
.method public static a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Lb4/f/a/c/c/o;Ljava/lang/Object;)V
.locals 0
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-virtual {p3, p0, p4}, Lb4/f/a/c/c/o;->b(Ljava/lang/String;Ljava/lang/String;)Lb4/f/a/c/c/o; // <----- p4 of Object type, whereas the method signature requires String
return-void
.end method
.super Ljava/lang/Object;
.source "outline" //
...
# around line 623
.method public static a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Lb4/f/a/c/c/o;Ljava/lang/Object;)V
.locals 0
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-virtual {p3, p0, p4}, Lb4/f/a/c/c/o;->b(Ljava/lang/String;Ljava/lang/String;)Lb4/f/a/c/c/o; // <----- p4 of Object type, whereas the method signature requires String
return-void
.end method
js...@google.com <js...@google.com> #5
From the apk built with R8 1.5.42, the signature is correct:
# around line 644
.method public static a(Ljava/lang/StringBuilder;Ljava/lang/String;CLb4/f/a/c/c/o;Ljava/lang/String;)V // <------ here correctly set String
.locals 0
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-virtual {p3, p4, p0}, Lb4/f/a/c/c/o;->b(Ljava/lang/String;Ljava/lang/String;)Lb4/f/a/c/c/o;
return-void
.end method
# around line 644
.method public static a(Ljava/lang/StringBuilder;Ljava/lang/String;CLb4/f/a/c/c/o;Ljava/lang/String;)V // <------ here correctly set String
.locals 0
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-virtual {p3, p4, p0}, Lb4/f/a/c/c/o;->b(Ljava/lang/String;Ljava/lang/String;)Lb4/f/a/c/c/o;
return-void
.end method
js...@google.com <js...@google.com>
js...@google.com <js...@google.com> #6
Oops, just noticed that comment #5 was a wrong one; it has another argument of type `C` in the middle. Also, different order of arguments for ...o;->b invocation. It's instead:
# around line 660
.method public static a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Lb4/f/a/c/c/o;Ljava/lang/String;)V
.locals 0
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-virtual {p3, p0, p4}, Lb4/f/a/c/c/o;->b(Ljava/lang/String;Ljava/lang/String;)Lb4/f/a/c/c/o;
return-void
.end method
# around line 660
.method public static a(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Lb4/f/a/c/c/o;Ljava/lang/String;)V
.locals 0
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-virtual {p3, p0, p4}, Lb4/f/a/c/c/o;->b(Ljava/lang/String;Ljava/lang/String;)Lb4/f/a/c/c/o;
return-void
.end method
js...@google.com <js...@google.com> #7
Reproduced locally:
STDERR:
dex2oat I 06-04 22:47:11 16522 16522 dex2oat.cc:3108] /usr/local/google/home/jsjeon/projects/r8/tools/linux/art/bin/../bin/dex2oat --instruction-set=x86_64 --instruction-set-features=ssse3,sse4.1,sse4.2,-avx,-avx2,popcnt --runtime-arg -Xnorelocate --host --boot-image=/usr/local/google/home/jsjeon/projects/r8/tools/linux/art/bin/../framework/core.art --dex-file=/tmp/junit15880799828407799732/junit14899949224783052967/out.zip --output-vdex-fd=7 --oat-fd=8 --oat-location=/tmp/junit15880799828407799732/junit14899949224783052967/oat/x86_64/out.odex --compiler-filter=quicken --class-loader-context=PCL[]
dex2oat I 06-04 22:47:11 16522 16522 dex2oat.cc:2808] dex2oat took 87.263ms (87.711ms cpu) (threads: 72) arena alloc=3KB (3528B) java alloc=32KB (32800B) native alloc=415KB (425952B) free=9MB (9830432B)
Exception in thread "main" java.lang.VerifyError: Verifier rejected class com.android.tools.r8.GeneratedOutlineSupport: void com.android.tools.r8.GeneratedOutlineSupport.outline0(java.lang.StringBuilder, java.lang.String, java.lang.String, com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass, java.lang.Object) failed to verify: void com.android.tools.r8.GeneratedOutlineSupport.outline0(java.lang.StringBuilder, java.lang.String, java.lang.String, com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass, java.lang.Object): [0xA] register v4 has type Reference: java.lang.Object but expected Precise Reference: java.lang.String (declaration of 'com.android.tools.r8.GeneratedOutlineSupport' appears in /tmp/junit15880799828407799732/junit14899949224783052967/out.zip)
at com.android.tools.r8.GeneratedOutlineSupport.outline0(Unknown Source:0)
at com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass.method1(Unknown Source:1)
at com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass.main(Unknown Source:14)
STDERR:
dex2oat I 06-04 22:47:11 16522 16522 dex2oat.cc:3108] /usr/local/google/home/jsjeon/projects/r8/tools/linux/art/bin/../bin/dex2oat --instruction-set=x86_64 --instruction-set-features=ssse3,sse4.1,sse4.2,-avx,-avx2,popcnt --runtime-arg -Xnorelocate --host --boot-image=/usr/local/google/home/jsjeon/projects/r8/tools/linux/art/bin/../framework/core.art --dex-file=/tmp/junit15880799828407799732/junit14899949224783052967/out.zip --output-vdex-fd=7 --oat-fd=8 --oat-location=/tmp/junit15880799828407799732/junit14899949224783052967/oat/x86_64/out.odex --compiler-filter=quicken --class-loader-context=PCL[]
dex2oat I 06-04 22:47:11 16522 16522 dex2oat.cc:2808] dex2oat took 87.263ms (87.711ms cpu) (threads: 72) arena alloc=3KB (3528B) java alloc=32KB (32800B) native alloc=415KB (425952B) free=9MB (9830432B)
Exception in thread "main" java.lang.VerifyError: Verifier rejected class com.android.tools.r8.GeneratedOutlineSupport: void com.android.tools.r8.GeneratedOutlineSupport.outline0(java.lang.StringBuilder, java.lang.String, java.lang.String, com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass, java.lang.Object) failed to verify: void com.android.tools.r8.GeneratedOutlineSupport.outline0(java.lang.StringBuilder, java.lang.String, java.lang.String, com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass, java.lang.Object): [0xA] register v4 has type Reference: java.lang.Object but expected Precise Reference: java.lang.String (declaration of 'com.android.tools.r8.GeneratedOutlineSupport' appears in /tmp/junit15880799828407799732/junit14899949224783052967/out.zip)
at com.android.tools.r8.GeneratedOutlineSupport.outline0(Unknown Source:0)
at com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass.method1(Unknown Source:1)
at com.android.tools.r8.ir.optimize.outliner.classtypes.B134462736$TestClass.main(Unknown Source:14)
js...@google.com <js...@google.com> #8
to...@gmail.com <to...@gmail.com> #9
Quickly tested and no more crashes.
js...@google.com <js...@google.com> #10
The fix is landed on master, and available as R8 1.5.44
to...@gmail.com <to...@gmail.com> #11
Thanks quickly tested as 1.5.44 contains other fixes.
It works and no other regression spotted for now.
It works and no other regression spotted for now.
js...@google.com <js...@google.com> #12
Great! Thank you for the quick test and confirmation!
Description
Different ones that those solved in 1.5.42 but tied to a Java library in a full Kotlin code.
2019-06-04 14:04:24.581 13178-13178/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: xxxxxx, PID: 13178
java.lang.VerifyError: Verifier rejected class b4.c.b.a.a: void b4.c.b.a.a.a(java.lang.StringBuilder, java.lang.String, java.lang.String, b4.f.a.c.c.o, java.lang.Object) failed to verify: void b4.c.b.a.a.a(java.lang.StringBuilder, java.lang.String, java.lang.String, b4.f.a.c.c.o, java.lang.Object): [0xA] register v4 has type Reference: java.lang.Object but expected Precise Reference: java.lang.String (declaration of 'b4.c.b.a.a' appears in base.apk)
at b4.c.b.a.a.a(Unknown Source:0)
at b4.d.a.w.o.t.<init>(DecodePath.java:6)
at b4.d.a.z.d.<clinit>(LoadPathCache.java:2)
at b4.d.a.n.<init>(Registry.java:3)
at b4.d.a.c.<init>(Glide.java:14)
at b4.d.a.c.b(Glide.java:82)
at b4.d.a.c.a(Glide.java:13)
at xxxxx.onCreate(xxxx.kt:18)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1155)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5918)
at android.app.ActivityThread.access$1100(ActivityThread.java:202)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1665)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)