Status Update
Comments
ch...@google.com <ch...@google.com>
sg...@google.com <sg...@google.com> #2
To rule the options out:
- Are you using desugared library in your project (
- What is the minSdk of your project? If it's strictly below 24, and you change it to 24, and let us know if the issue happens.
If you want us to help you further, for example by helping you build a work-around, or fix the compiler, we need you to either provide us a reproduction project (github or zip) or a compilation dump of your application (See how to generate dumps here
Thanks for the report.
ap...@google.com <ap...@google.com> #3
In my project minSdk is 24.
Unfortunately I can't provide you the source code or dump as this is a confidential project, but I can provide a list of dependencies, build.gradle files and a class that works with LocalDate if that helps, or maybe smth else, but not a whole project(
hs...@siren.plus <hs...@siren.plus> #4
li...@xiaomi.com <li...@xiaomi.com> #5
Retracing from Stack overflow gives:
Caused by: com.android.tools.r8.errors.Unreachable: Attempt to enqueue an action in a non pushable enqueuer work list.
at com.android.tools.r8.shaking.EnqueuerWorklist$NonPushableEnqueuerWorklist.attemptToEnqueue(EnqueuerWorklist.java:800)
at com.android.tools.r8.shaking.EnqueuerWorklist$NonPushableEnqueuerWorklist.enqueueMarkMethodLiveAction(EnqueuerWorklist.java:856)
at com.android.tools.r8.shaking.Enqueuer.markMethodAsLiveWithCompatRule(Enqueuer.java:4882)
at com.android.tools.r8.shaking.Enqueuer.markMethodAsTargeted(Enqueuer.java:4773)
at com.android.tools.r8.shaking.Enqueuer.lambda$markVirtualMethodAsReachable$88(Enqueuer.java:3387)
at com.android.tools.r8.graph.MethodResolutionResult$SingleProgramResolutionResult.visitMethodResolutionResults(MethodResolutionResult.java:897)
at com.android.tools.r8.graph.MethodResolutionResult.forEachMethodResolutionResult(MethodResolutionResult.java:103)
at com.android.tools.r8.shaking.Enqueuer.markVirtualMethodAsReachable(Enqueuer.java:3340)
at com.android.tools.r8.shaking.Enqueuer.traceInvokeInterface(Enqueuer.java:1463)
at com.android.tools.r8.shaking.Enqueuer.traceInvokeInterface(Enqueuer.java:1447)
at com.android.tools.r8.shaking.DefaultEnqueuerUseRegistry.registerInvokeInterface(DefaultEnqueuerUseRegistry.java:86)
at com.android.tools.r8.cf.code.CfInvoke.internalRegisterUse(CfInvoke.java:153)
at com.android.tools.r8.cf.code.CfInstruction.registerUse(CfInstruction.java:104)
at com.android.tools.r8.graph.CfCode.registerCodeReferences(CfCode.java:683)
at com.android.tools.r8.graph.ProgramMethod.registerCodeReferences(ProgramMethod.java:127)
at com.android.tools.r8.shaking.Enqueuer.traceCode(Enqueuer.java:4809)
at com.android.tools.r8.shaking.Enqueuer.traceNonDesugaredCode(Enqueuer.java:4803)
at com.android.tools.r8.shaking.Enqueuer.markMethodAsLive(Enqueuer.java:4742)
at com.android.tools.r8.shaking.EnqueuerWorklist$MarkMethodLiveAction.run(EnqueuerWorklist.java:166)
at com.android.tools.r8.shaking.Enqueuer.postProcessingDesugaring(Enqueuer.java:4540)
at com.android.tools.r8.shaking.Enqueuer.trace(Enqueuer.java:4477)
at com.android.tools.r8.shaking.Enqueuer.traceApplication(Enqueuer.java:3622)
at com.android.tools.r8.R8.runEnqueuer(R8.java:1012)
at com.android.tools.r8.R8.run(R8.java:369)
at com.android.tools.r8.R8.run(R8.java:252)
at com.android.tools.r8.R8.lambda$runForTesting$1(R8.java:243)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:80)
... 34 more
sg...@google.com <sg...@google.com> #6
This comes from the desugaring post processing. It could be:
- desugared library retargeting
interface method desugaring(not in 1.2 with 24)- api callback
record(not generating methods)disable desugarer(not generating method)
What's going on is that R8 is verifying that code generated in the post processor is targeting already traced code.
Is there in the app any override of the following 3 methods: [java.time.ZoneId java.util.TimeZone.toZoneId(), java.time.ZonedDateTime java.util.GregorianCalendar.toZonedDateTime(), java.time.Instant java.util.Date.toInstant()] ?
Alternatively, it could be that something not traced as a library override is now traced with the callback? @mkroghj wasn't there a change on library override computation and tracing?
ap...@google.com <ap...@google.com> #7
Here is how I use the method java.time.Instant java.util.Date.toInstant():
Date.from(value.atStartOfDay(ZoneId.systemDefault()).toInstant())
and in another place
value?.let { Date.from(it.atStartOfDay(ZoneId.systemDefault())?.toInstant()) } ?: Date()
both variable 'value' is the LocalDate
ap...@google.com <ap...@google.com> #9
Well I cannot reproduce the issue.
After deep thinking I'm trying to improve the error message in
Not sure if there is much more I can do unless someone reports a similar issue but can provide a dump.
ap...@google.com <ap...@google.com> #10
Branch: main
commit 6dc561aa43a09737a114a0b233d9476b4ec902e5
Author: Clément Béra <clementbera@google.com>
Date: Tue Jan 31 14:29:20 2023
Improve error messages in postprocessing desugaring
Bug:
Change-Id: Ib10b3e747610443d932d4359727db2bdfc2455f3
M src/main/java/com/android/tools/r8/shaking/EnqueuerWorklist.java
ap...@google.com <ap...@google.com> #11
ap...@google.com <ap...@google.com> #12
Can you try to edit your project to:
pluginManagement {
buildscript {
repositories {
mavenCentral()
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw/main")
}
}
dependencies {
classpath("com.android.tools:r8:6dc561aa43a09737a114a0b233d9476b4ec902e5")
}
}
}
This will use the latest R8 version instead of the one in studio.
Then I need you to provide me the stack trace which looks like this:
Caused by: com.android.tools.r8.internal.e50: Attempt to enqueue an action in a non pushable enqueuer work list.
at com.android.tools.r8.shaking.T.c(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:1)
at com.android.tools.r8.shaking.T.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:11)
at com.android.tools.r8.shaking.z.e(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:17)
at com.android.tools.r8.shaking.z.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:1334)
at com.android.tools.r8.graph.n3.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:4)
at com.android.tools.r8.graph.b3.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:1)
at com.android.tools.r8.shaking.z.a(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:1301)
at com.android.tools.r8.shaking.z.b(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:36)
at com.android.tools.r8.shaking.z.e(R8_4.0.48_320a4fe2564c68ad8fe4492fea65872bc8f51e21c4d46e3dbac43afcc38d90de:3)
... 34 more
And I will retrace and hopefully the error message will be more explicit.
ap...@google.com <ap...@google.com> #13
here is the new stack trace:
AGPBI: {"kind":"error","text":"com.android.tools.r8.errors.Unreachable: Attempt to enqueue an action in a non pushable enqueuer work list (MarkMethodLiveAction java.util.Spliterator com.google.common.collect.Multiset.spliterator() from java.util.Spliterator com.google.common.collect.Multiset.spliterator())","sources":[{}],"tool":"R8"}
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:minifyReleaseWithR8'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
> Compilation failed to complete
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:minifyReleaseWithR8'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:140)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:309)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:302)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:288)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:462)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:379)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:348)
at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:130)
at org.gradle.internal.Factories$1.create(Factories.java:31)
at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:321)
at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:304)
at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLock(DefaultWorkerLeaseService.java:309)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:126)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:92)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:78)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:66)
at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:244)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:221)
at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:204)
at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:187)
at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:165)
at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:124)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:80)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:58)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:181)
at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:71)
at org.gradle.internal.Either$Right.fold(Either.java:175)
at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:69)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:102)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:254)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:91)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:56)
at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:281)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:139)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:309)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:302)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:288)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:462)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:379)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
at Version.fakeStackEntry(Version_main.java:0)
at com.android.tools.r8.utils.ExceptionUtils.failWithFakeEntry(ExceptionUtils.java:139)
at com.android.tools.r8.utils.ExceptionUtils.failCompilation(ExceptionUtils.java:89)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:83)
at com.android.tools.r8.utils.ExceptionUtils.withR8CompilationHandler(ExceptionUtils.java:69)
at com.android.tools.r8.R8.runForTesting(R8.java:225)
at com.android.tools.r8.R8.run(R8.java:181)
at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:308)
at com.android.build.gradle.internal.tasks.R8Task$Companion.shrink(R8Task.kt:642)
at com.android.build.gradle.internal.tasks.R8Task$R8Runnable.execute(R8Task.kt:712)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:212)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:187)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:120)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:162)
at org.gradle.internal.Factories$1.create(Factories.java:31)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:249)
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:109)
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:114)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:157)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:126)
... 2 more
Caused by: com.android.tools.r8.errors.Unreachable: Attempt to enqueue an action in a non pushable enqueuer work list (MarkMethodLiveAction java.util.Spliterator com.google.common.collect.Multiset.spliterator() from java.util.Spliterator com.google.common.collect.Multiset.spliterator())
at com.android.tools.r8.shaking.EnqueuerWorklist$NonPushableEnqueuerWorklist.attemptToEnqueue(EnqueuerWorklist.java:800)
at com.android.tools.r8.shaking.EnqueuerWorklist$NonPushableEnqueuerWorklist.enqueueMarkMethodLiveAction(EnqueuerWorklist.java:852)
at com.android.tools.r8.shaking.Enqueuer.markMethodAsLiveWithCompatRule(Enqueuer.java:4943)
at com.android.tools.r8.shaking.Enqueuer.markMethodAsTargeted(Enqueuer.java:4834)
at com.android.tools.r8.shaking.Enqueuer.lambda$markVirtualMethodAsReachable$89(Enqueuer.java:3407)
at com.android.tools.r8.graph.MethodResolutionResult$SingleProgramResolutionResult.visitMethodResolutionResults(MethodResolutionResult.java:897)
at com.android.tools.r8.graph.MethodResolutionResult.forEachMethodResolutionResult(MethodResolutionResult.java:103)
at com.android.tools.r8.shaking.Enqueuer.markVirtualMethodAsReachable(Enqueuer.java:3360)
at com.android.tools.r8.shaking.Enqueuer.traceInvokeInterface(Enqueuer.java:1467)
at com.android.tools.r8.shaking.Enqueuer.traceInvokeInterface(Enqueuer.java:1451)
at com.android.tools.r8.shaking.DefaultEnqueuerUseRegistry.registerInvokeInterface(DefaultEnqueuerUseRegistry.java:80)
at com.android.tools.r8.cf.code.CfInvoke.internalRegisterUse(CfInvoke.java:154)
at com.android.tools.r8.cf.code.CfInstruction.registerUse(CfInstruction.java:104)
at com.android.tools.r8.graph.CfCode.registerCodeReferences(CfCode.java:733)
at com.android.tools.r8.graph.ProgramMethod.registerCodeReferences(ProgramMethod.java:127)
at com.android.tools.r8.shaking.Enqueuer.traceCode(Enqueuer.java:4870)
at com.android.tools.r8.shaking.Enqueuer.traceNonDesugaredCode(Enqueuer.java:4864)
at com.android.tools.r8.shaking.Enqueuer.markMethodAsLive(Enqueuer.java:4803)
at com.android.tools.r8.shaking.EnqueuerWorklist$MarkMethodLiveAction.run(EnqueuerWorklist.java:166)
at com.android.tools.r8.shaking.Enqueuer.postProcessingDesugaring(Enqueuer.java:4601)
at com.android.tools.r8.shaking.Enqueuer.trace(Enqueuer.java:4537)
at com.android.tools.r8.shaking.Enqueuer.traceApplication(Enqueuer.java:3655)
at com.android.tools.r8.R8.runEnqueuer(R8.java:994)
at com.android.tools.r8.R8.run(R8.java:361)
at com.android.tools.r8.R8.run(R8.java:238)
at com.android.tools.r8.R8.lambda$runForTesting$1(R8.java:229)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:80)
... 35 more
ap...@google.com <ap...@google.com> #14
Issue: MarkMethodLiveAction java.util.Spliterator com.google.common.collect.Multiset.spliterator() from java.util.Spliterator com.google.common.collect.Multiset.spliterator()
Multiset.spliterator() should have been detected as a library override and be traced, but it isn't. So we then verify it is live later on, and it isn't.
There may be a way to reproduce the issue by creating a project using Multiset from guava.
ap...@google.com <ap...@google.com> #15
I found an issue and fixed it. It seems R8 is trying to generate call-backs for non live methods.
Once this lands I will ask you to check if it works for you (I don't have a hash yet).
ap...@google.com <ap...@google.com> #16
Branch: main
commit af29744fd0bbac05db78de171b3fc2e67afb8b19
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Mon Feb 06 13:43:09 2023
Avoid synthesis of unused methods in default interface method desugaring
Bug:
Bug:
Bug:
Change-Id: Iebe2fb88ef7aca337f8db34aba18b81aaa953617
M src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
ap...@google.com <ap...@google.com> #17
Needs backport to 4.0 and 8.0.
ap...@google.com <ap...@google.com> #18
Branch: main
commit f35ec2083c5b5880f59fe141c4a12f15c6e3f230
Author: Clément Béra <clementbera@google.com>
Date: Mon Feb 06 11:10:11 2023
Desugared library: don't generate callbacks for dead methods
Bug:
Change-Id: I1497363ceab5842f7e09f7fc604c794a49b02ffb
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
M src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
M src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
A src/test/java/com/android/tools/r8/desugar/desugaredlibrary/GuavaMultiSetSpliteratorTest.java
ap...@google.com <ap...@google.com> #19
Can you try:
pluginManagement {
buildscript {
repositories {
mavenCentral()
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw/main")
}
}
dependencies {
classpath("com.android.tools:r8:f35ec2083c5b5880f59fe141c4a12f15c6e3f230")
}
}
}
Does it compile for you?
ap...@google.com <ap...@google.com> #20
Yes, everything is working great now!
ap...@google.com <ap...@google.com> #21
Branch: main
commit 9952fea15e2abee802e180706695bffb8dabed99
Author: Clément Béra <clementbera@google.com>
Date: Tue Feb 07 11:22:59 2023
Fix live method computation in api callback synthesizer
Bug:
Change-Id: Id1b5a80e10b8faba0f26d061e918d5f7f6f44224
M src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringEventConsumer.java
M src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
M src/main/java/com/android/tools/r8/profile/art/rewriting/ArtProfileRewritingCfPostProcessingDesugaringEventConsumer.java
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
ap...@google.com <ap...@google.com> #22
Sorry there was an issue with the last hash triggering other bugs so I cannot backport it.
Can you check again with
pluginManagement {
buildscript {
repositories {
mavenCentral()
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw/main")
}
}
dependencies {
classpath("com.android.tools:r8:9952fea15e2abee802e180706695bffb8dabed99")
}
}
}
?
I will try to backport this tomorrow if this works for you so that it's in the next eel point release (2).
ap...@google.com <ap...@google.com> #23
I have this error with the last version
Could not resolve all files for configuration 'classpath'.
> Could not find com.android.tools:r8:9952fea15e2abee802e180706695bffb8dabed99.
Searched in the following locations:
- https://repo.maven.apache.org/maven2/com/android/tools/r8/9952fea15e2abee802e180706695bffb8dabed99/r8-9952fea15e2abee802e180706695bffb8dabed99.pom
- https://storage.googleapis.com/r8-releases/raw/main/com/android/tools/r8/9952fea15e2abee802e180706695bffb8dabed99/r8-9952fea15e2abee802e180706695bffb8dabed99.pom
Required by:
unspecified:unspecified:unspecified
Possible solution:
- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
ap...@google.com <ap...@google.com> #24
Can you try again? It takes like 1 h to get it to upload to maven so maybe it was not there yet.
It would be nice to confirm it works because I have to land tomorrow if we want it in eel.
Else 9c1e702497c4bce7bddbf8e7bc5e10c8372ed4d6 was done afterwards.
ap...@google.com <ap...@google.com> #25
Yes, now 9952fea15e2abee802e180706695bffb8dabed99
works fine, the build is assembled and working properly.
Will it be in flamingo and giraffe?
ap...@google.com <ap...@google.com> #26
It will be in flamingo and giraffe though it takes weeks to reach the releases.
I am try to get in into eel but I'm not sure I will be able to.
R8 is part of agp though so it depends on agp updates not android studio (but recent android studio have more recent agp).
ap...@google.com <ap...@google.com> #27
Yes, of course, I understand that this is part of the agp. Perhaps this fix will be in the next release of r8?
ap...@google.com <ap...@google.com> #28
Branch: main
commit 1142fa00189d9d4829cbee87476281cbef6b86c8
Author: Clément Béra <clementbera@google.com>
Date: Wed Feb 08 09:28:09 2023
API callback fix for live non instantiated types
Bug:
Change-Id: I7d947f3e39a30b5da3e5bd307d3babb5fdb251f7
M src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
ap...@google.com <ap...@google.com> #29
Branch: 4.0
commit e70cabb270a305828df5e7e2ab4c7c299a70ea2e
Author: Clément Béra <clementbera@google.com>
Date: Wed Feb 08 10:51:54 2023
Version 4.0.52
Bug:
Change-Id: If7860604d6bc24173db1657b1ca8c397ba9e8732
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #30
Branch: 4.0
commit 863b1f3f73452dae47130011c7de19cd8ef1813c
Author: Clément Béra <clementbera@google.com>
Date: Wed Feb 08 09:47:02 2023
Desugared library: don't generate callbacks for live non instantiated types
Bug:
Change-Id: I1497363ceab5842f7e09f7fc604c794a49b02ffb
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
M src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
M src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringEventConsumer.java
M src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
A src/test/java/com/android/tools/r8/desugar/desugaredlibrary/GuavaMultiSetSpliteratorTest.java
ap...@google.com <ap...@google.com> #31
Branch: 8.0
commit 9e2261fb6d168056118d1d60cf0037b4c983f07c
Author: Clément Béra <clementbera@google.com>
Date: Wed Feb 08 11:12:27 2023
Version 8.0.28
- fix desugared lib api callback on dead methods
- fix desugared lib conversion with swap on wide operands
Bug:
Bug:
Change-Id: Id93395d8738be223d197b0332bf89491cbe1dc8c
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #32
Branch: 8.0
commit b5242da0103a6406ca07ac632153b90b76a67d3e
Author: Clément Béra <clementbera@google.com>
Date: Wed Feb 08 10:57:58 2023
Desugared library: don't generate callbacks for live non instantiated types
Bug:
Change-Id: I1497363ceab5842f7e09f7fc604c794a49b02ffb
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
M src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringCollection.java
M src/main/java/com/android/tools/r8/ir/desugar/CfPostProcessingDesugaringEventConsumer.java
M src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
A src/test/java/com/android/tools/r8/desugar/desugaredlibrary/GuavaMultiSetSpliteratorTest.java
ap...@google.com <ap...@google.com> #33
Still exists on:
R8 8.1.56
Gradle 8.2.0-alpha15
Android 2022.3.1
ap...@google.com <ap...@google.com> #34
The current issue was confirmed to be fixed in
If you would be able to share a zip dump of the compiler inputs (including the app's JVM class files, keep rules, etc.) we should be able to reproduce and fix the issue:
./gradlew assembleRelease --no-daemon -Dcom.android.tools.r8.dumpinputtodirectory=/path/to/dumps
You can share the dump privately with
See also
ap...@google.com <ap...@google.com> #35
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Minimize reproduction for
Expand for full commit details
Minimize reproduction for b/391417819
Bug: b/391417819
Change-Id: I65a9c2427b41f2075305c1383f9dd44c0f580433
Files:
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: ddeceac56e5f69ba399d452143f7e0ad846e463a
Date: Thu Jan 23 08:35:14 2025
ap...@google.com <ap...@google.com> #36
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Extend ArrayConstructionSimplifier dominance checks
Expand for full commit details
Extend ArrayConstructionSimplifier dominance checks
Fixes: b/391417819
Change-Id: Id31f2463d9255415d33ce43bcafd9e794c550a49
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: ad1db321daef6d551838790b37ab31839b13d4a6
Date: Thu Jan 23 08:35:19 2025
ap...@google.com <ap...@google.com> #37
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 2d41ee40de5da2ea80734d60733b431b2082a4cc
Date: Thu Jan 23 08:35:09 2025
ap...@google.com <ap...@google.com> #38
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a9d0cc5fb40101e32f13da8163d296d9151078cc
Date: Wed Feb 05 14:22:37 2025
ap...@google.com <ap...@google.com> #39
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Version 8.8.30
Expand for full commit details
Version 8.8.30
Bug: b/391417819
Change-Id: I966d3ceddba2f0ee0817f7551440745dec6590d2
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: c27beef20ae9bfd4c6a3a0aa5b6bca529459894d
Date: Wed Feb 05 14:22:47 2025
ap...@google.com <ap...@google.com> #40
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Version 8.7.31
Expand for full commit details
Version 8.7.31
Bug: b/391417819
Change-Id: I596f4c4d86000f39b5bd392c4ad82f290c26ba4c
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: c3b0d4ada556a59928e0c15c3382966bfab65bb5
Date: Wed Feb 05 14:25:48 2025
ap...@google.com <ap...@google.com> #41
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: e15d7557ead42a62f051a3d377dbf2c194080c1e
Date: Wed Feb 05 14:25:39 2025
ap...@google.com <ap...@google.com> #42
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Version 8.9.24
Expand for full commit details
Version 8.9.24
Bug: b/391417819
Change-Id: Ibef5197ce6514a49e36908efe5a363ced62a4707
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: cb856f7819c1c4d9f18c8cb5912cba0d133b923f
Date: Wed Feb 05 14:21:33 2025
ap...@google.com <ap...@google.com> #43
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 0214496fecdceca1a0730153ece5d9f5f7f6ba0d
Date: Wed Feb 05 14:21:08 2025
ap...@google.com <ap...@google.com> #44
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 6463499b7bfc8b408daf1e403b8cfc707825d04f
Date: Wed Feb 05 14:28:58 2025
ap...@google.com <ap...@google.com> #45
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Version 8.5.51
Expand for full commit details
Version 8.5.51
Bug: b/391417819
Change-Id: I0059527e0cea91383204efe6d1e656551fc423e2
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: 9aaf485a55ea66ce7a09748986b799272208af09
Date: Wed Feb 05 14:29:06 2025
ap...@google.com <ap...@google.com> #46
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Version 8.6.40
Expand for full commit details
Version 8.6.40
Bug: b/391417819
Change-Id: Ia0da9c64c03523fd9f7a335c818acb074ee69e35
Files:
- M
src/main/java/com/android/tools/r8/Version.java
Hash: dce31b8fd345ee2720a300394764cea8d2a8cded
Date: Wed Feb 05 14:28:32 2025
ap...@google.com <ap...@google.com> #47
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a50126864f7ebb15091207741df2b229653b3804
Date: Wed Feb 05 14:28:22 2025
ap...@google.com <ap...@google.com> #48
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Minimize reproduction for
Expand for full commit details
Minimize reproduction for b/391417819
Bug: b/391417819
Change-Id: I65a9c2427b41f2075305c1383f9dd44c0f580433
Files:
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 19c63ff0edfb19a43225f4e71a2040773ff61dde
Date: Thu Jan 23 08:34:02 2025
ap...@google.com <ap...@google.com> #49
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Extend ArrayConstructionSimplifier dominance checks
Expand for full commit details
Extend ArrayConstructionSimplifier dominance checks
Fixes: b/391417819
Change-Id: Id31f2463d9255415d33ce43bcafd9e794c550a49
Files:
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: ef2d79417694eb4d4015b88217079e7078608546
Date: Thu Jan 23 08:34:07 2025
ap...@google.com <ap...@google.com> #50
Project: r8
Branch: 8.6
Author: Christoffer Adamsen <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: 057e709d6d58cc612be0c1454528a64f4e520afb
Date: Thu Jan 23 08:33:57 2025
ap...@google.com <ap...@google.com> #51
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a9d0cc5fb40101e32f13da8163d296d9151078cc
Date: Wed Feb 05 14:22:37 2025
ap...@google.com <ap...@google.com> #52
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: e15d7557ead42a62f051a3d377dbf2c194080c1e
Date: Wed Feb 05 14:25:39 2025
ap...@google.com <ap...@google.com> #53
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 0214496fecdceca1a0730153ece5d9f5f7f6ba0d
Date: Wed Feb 05 14:21:08 2025
ap...@google.com <ap...@google.com> #54
Project: r8
Branch: 8.5
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 6463499b7bfc8b408daf1e403b8cfc707825d04f
Date: Wed Feb 05 14:28:58 2025
ap...@google.com <ap...@google.com> #55
Project: r8
Branch: 8.8
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: a9d0cc5fb40101e32f13da8163d296d9151078cc
Date: Wed Feb 05 14:22:37 2025
ap...@google.com <ap...@google.com> #56
Project: r8
Branch: 8.7
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: e15d7557ead42a62f051a3d377dbf2c194080c1e
Date: Wed Feb 05 14:25:39 2025
ap...@google.com <ap...@google.com> #57
Project: r8
Branch: 8.9
Author: Christoffer Adamsen <
Link:
Fix dominator check in ValueUtils.computeInitialArrayValues()
Expand for full commit details
Fix dominator check in ValueUtils.computeInitialArrayValues()
It was not correctly identifying linear edges.
Bug: 391417819
Change-Id: Ibfea470210b2af338129c306f349e87a0e47af6e
Files:
- M
src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
- M
src/main/java/com/android/tools/r8/ir/conversion/passes/ArrayConstructionSimplifier.java
- M
src/main/java/com/android/tools/r8/utils/DominatorChecker.java
- M
src/main/java/com/android/tools/r8/utils/ValueUtils.java
Hash: 0214496fecdceca1a0730153ece5d9f5f7f6ba0d
Date: Wed Feb 05 14:21:08 2025
an...@google.com <an...@google.com> #58
Thank you for your patience while our engineering team worked to resolve this issue. A fix for this issue is now available in:
- Android Studio Meerkat | 2024.3.1 RC 2
- Android Gradle Plugin 8.9.0-rc02
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Thank you for taking the time to submit feedback — we really appreciate it!
an...@google.com <an...@google.com> #59
The fixes for this issue are now also available in:
- Android Studio Ladybug Feature Drop | 2024.2.2 Patch 2
- Android Gradle Plugin 8.8.2
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Description
Hi there,
The issue continues to happen for us even with AGP 8.7.3. I am attaching the source code and smali output here.
java.lang.VerifyError: Verifier rejected class com.example.r8.R8Test: byte[] com.example.r8.R8Test.toBytes(boolean) failed to verify: byte[] com.example.r8.R8Test.toBytes(boolean): [0x28] unexpected value in v0 of type Undefined but expected Byte for put (declaration of 'com.example.r8.R8Test' appears in /data/app/~~xxxxx/base.apk)
We believe this should be a bug that only occurs in a specific scenario.
Source code as follows:
smail output as follws:
From the above smail output, it can be seen that the code byte[] bytes = new byte[3]; was optimized away, resulting in a verifyError.