Fixed
Status Update
Comments
mk...@google.com <mk...@google.com>
mk...@google.com <mk...@google.com> #2
Zac, thank you for posting an issue regarding this (and your continued effort with using R8). This seems to be a concurrency issue. Can I ask you to try out the R8 version below compiled with an atomic integer to see if that fixes the problem? It is build from the change https://r8-review.googlesource.com/48420
buildscript {
repositories {
maven {
url "https://storage.googleapis.com/r8-releases/raw/master "
}
}
dependencies {
classpath 'com.android.tools:r8:e8d98649ad8de4b18dcf362694f10ee35738fb05' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
buildscript {
repositories {
maven {
url "
}
}
dependencies {
classpath 'com.android.tools:r8:e8d98649ad8de4b18dcf362694f10ee35738fb05' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
mk...@google.com <mk...@google.com> #3
I can see that another runtime problem has been filed on this version - but that seems to be after compilation which leads me to think the above solved the issue? If so, I would like to get the fix into our release branch.
ap...@google.com <ap...@google.com> #4
Project: r8
Branch: master
commit f0f86caa6c4e84d190e3105f819ec94226d28dac
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Thu Feb 06 11:23:47 2020
Use AtomicInteger for increment synthesized service-loader methods
Using ConcurrentHashMap.size() will have races.
Bug: 148929520
Change-Id: I092eca549ad775709ac82f3cc161ef756782d624
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
https://r8-review.googlesource.com/48420
Branch: master
commit f0f86caa6c4e84d190e3105f819ec94226d28dac
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Thu Feb 06 11:23:47 2020
Use AtomicInteger for increment synthesized service-loader methods
Using ConcurrentHashMap.size() will have races.
Bug: 148929520
Change-Id: I092eca549ad775709ac82f3cc161ef756782d624
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
ap...@google.com <ap...@google.com> #5
Project: r8
Branch: 1.6
commit 43d24e66d090c6fd3f29b0eea611701f53d308df
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Feb 21 00:07:07 2020
Version 1.6.72
Cherry-pick: Use AtomicInteger for increment synthesized
service-loader methods
CL:https://r8-review.googlesource.com/48420
Bug: 148929520
Change-Id: I19eec5602b9e948d2cdfbd046f547d5f9efaf82d
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
https://r8-review.googlesource.com/49048
Branch: 1.6
commit 43d24e66d090c6fd3f29b0eea611701f53d308df
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Feb 21 00:07:07 2020
Version 1.6.72
Cherry-pick: Use AtomicInteger for increment synthesized
service-loader methods
CL:
Bug: 148929520
Change-Id: I19eec5602b9e948d2cdfbd046f547d5f9efaf82d
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
ap...@google.com <ap...@google.com> #6
Project: r8
Branch: 2.0
commit cf5f21dd65a21127d51ef242cc940ee4c7befb4b
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Feb 21 09:17:01 2020
Version 2.0.36
Cherry-pick: Use AtomicInteger for increment synthesized
service-loader methods
CL:https://r8-review.googlesource.com/48420
Bug: 148929520
Change-Id: I5806a2a02995b2d982cee9775d6692df3d77194d
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
https://r8-review.googlesource.com/49047
Branch: 2.0
commit cf5f21dd65a21127d51ef242cc940ee4c7befb4b
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Feb 21 09:17:01 2020
Version 2.0.36
Cherry-pick: Use AtomicInteger for increment synthesized
service-loader methods
CL:
Bug: 148929520
Change-Id: I5806a2a02995b2d982cee9775d6692df3d77194d
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
mk...@google.com <mk...@google.com> #7
This is now fixed (including other nice fixes). To try it out one can add the following to the top-level build.gradle file:
buildscript {
repositories {
maven {
url 'https://storage.googleapis.com/r8-releases/raw '
}
}
dependencies {
classpath 'com.android.tools:r8:2.0.36' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
buildscript {
repositories {
maven {
url '
}
}
dependencies {
classpath 'com.android.tools:r8:2.0.36' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
zs...@salesforce.com <zs...@salesforce.com> #8
Thanks! We'll try 2.0.37 this week
On Sun, Feb 23, 2020 at 4:16 PM <buganizer-system@google.com> wrote:
On Sun, Feb 23, 2020 at 4:16 PM <buganizer-system@google.com> wrote:
ap...@google.com <ap...@google.com> #9
Project: r8
Branch: 2.1.7
commit ed93285a1677fac37b3dc7c5bea698c9fa33ef04
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Tue Aug 04 12:40:18 2020
Version 2.1.7-r3
Cherry pick: Update synthesized $load method names
CL:https://r8-review.googlesource.com/c/r8/+/51402
Cherry pick: Workaround for non-determinism in service loader rewriter
CL:https://r8-review.googlesource.com/c/r8/+/51384
Cherry pick: Update ServiceLoaderRewriter to synchronize on synthetic clazz creation
CL:https://r8-review.googlesource.com/c/r8/+/50340
Cherry pick: Use AtomicInteger for increment synthesized service-loader methods
CL:https://r8-review.googlesource.com/c/r8/+/48420
Bug: 148929520
Bug: 153127674
Bug: 156054499
Bug: 162704239
Change-Id: I09a14a24d160338f20c0b7b972738d42103377cb
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/graph/DexItemFactory.java
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
A src/main/java/com/android/tools/r8/utils/IntBox.java
M src/main/java/com/android/tools/r8/utils/StringUtils.java
https://r8-review.googlesource.com/52664
Branch: 2.1.7
commit ed93285a1677fac37b3dc7c5bea698c9fa33ef04
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Tue Aug 04 12:40:18 2020
Version 2.1.7-r3
Cherry pick: Update synthesized $load method names
CL:
Cherry pick: Workaround for non-determinism in service loader rewriter
CL:
Cherry pick: Update ServiceLoaderRewriter to synchronize on synthetic clazz creation
CL:
Cherry pick: Use AtomicInteger for increment synthesized service-loader methods
CL:
Bug: 148929520
Bug: 153127674
Bug: 156054499
Bug: 162704239
Change-Id: I09a14a24d160338f20c0b7b972738d42103377cb
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/graph/DexItemFactory.java
M src/main/java/com/android/tools/r8/ir/optimize/ServiceLoaderRewriter.java
A src/main/java/com/android/tools/r8/utils/IntBox.java
M src/main/java/com/android/tools/r8/utils/StringUtils.java
Description
```
[2020-02-04T00:05:36.092Z] Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: Method $$ServiceLoaderMethods.$load0 Proto L java.util.Iterator =Encoded method Method $$ServiceLoaderMethods.$load0 Proto L java.util.Iterator and Method $$ServiceLoaderMethods.$load0 Proto L java.util.Iterator =Encoded method Method $$ServiceLoaderMethods.$load0 Proto L java.util.Iterator
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:190)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:109)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:95)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:373)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.graph.AppInfo.computeDefinitions(AppInfo.java:111)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.graph.AppInfo.getDefinitions(AppInfo.java:195)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.graph.AppInfo.definitionFor(AppInfo.java:175)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.graph.AppView.definitionFor(AppView.java:186)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.analysis.ClassInitializationAnalysis$InstructionUtils.forInvokeStatic(ClassInitializationAnalysis.java:356)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.code.InvokeStatic.definitelyTriggersClassInitialization(InvokeStatic.java:155)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.optimize.info.MethodOptimizationInfoCollector.lambda$triggersClassInitializationBeforeSideEffect$1(MethodOptimizationInfoCollector.java:627)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.optimize.info.MethodOptimizationInfoCollector.alwaysTriggerExpectedEffectBeforeAnythingElse(MethodOptimizationInfoCollector.java:668)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.optimize.info.MethodOptimizationInfoCollector.triggersClassInitializationBeforeSideEffect(MethodOptimizationInfoCollector.java:623)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.optimize.info.MethodOptimizationInfoCollector.identifyInvokeSemanticsForInlining(MethodOptimizationInfoCollector.java:606)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.optimize.info.MethodOptimizationInfoCollector.collectMethodOptimizationInfo(MethodOptimizationInfoCollector.java:123)
[2020-02-04T00:05:36.092Z] at com.android.tools.r8.ir.conversion.IRConverter.collectOptimizationInfo(IRConverter.java:1468)
[2020-02-04T00:05:36.093Z] at com.android.tools.r8.ir.conversion.IRConverter.optimize(IRConverter.java:1421)
[2020-02-04T00:05:36.093Z] at com.android.tools.r8.ir.conversion.IRConverter.rewriteCodeInternal(IRConverter.java:1096)
[2020-02-04T00:05:36.093Z] at com.android.tools.r8.ir.conversion.IRConverter.rewriteCode(IRConverter.java:1060)
[2020-02-04T00:05:36.093Z] at com.android.tools.r8.ir.conversion.IRConverter.processMethod(IRConverter.java:1041)
[2020-02-04T00:05:36.093Z] at com.android.tools.r8.ir.conversion.IRConverter.lambda$optimize$4(IRConverter.java:665)
[2020-02-04T00:05:36.093Z] at com.android.tools.r8.utils.ThreadUtils.lambda$processItems$0(ThreadUtils.java:25)
```