Fixed
Status Update
Comments
je...@google.com <je...@google.com> #2
Can you use the workaround described at
au...@google.com <au...@google.com> #3
Using 8.4.40 or 8.5.26 cannot fix the issue.
8.3.51 is not found.
Using 8.3.37 from
je...@google.com <je...@google.com> #4
From
@Søren: Could you triage this issue?
au...@google.com <au...@google.com> #5
Thanks for taking the time to create a reproduction. I reproduced the issue and confirmed that the issue is still present on main (R8 8.6). I will land a fix soon and backport the fix to the relevant release branches.
je...@google.com <je...@google.com> #6
Project: r8
Branch: main
commit 7803ec93afef8bf1047eaf8f209fdbe81bdbd581
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 08:39:10 2024
Reproduce IAE from instance field merging
Bug: b/347676160
Change-Id: I0614da65d0a60f7f2d01d6a8aa92b9cadfabe005
A src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
A src/test/java/com/android/tools/r8/classmerging/horizontal/testclasses/InaccessibleFieldTypeMergingTestClasses.java
https://r8-review.googlesource.com/94140
Branch: main
commit 7803ec93afef8bf1047eaf8f209fdbe81bdbd581
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 08:39:10 2024
Reproduce IAE from instance field merging
Bug:
Change-Id: I0614da65d0a60f7f2d01d6a8aa92b9cadfabe005
A src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
A src/test/java/com/android/tools/r8/classmerging/horizontal/testclasses/InaccessibleFieldTypeMergingTestClasses.java
gh...@google.com <gh...@google.com> #7
Project: r8
Branch: main
commit 9ea42409d593d89dce0184f00728ccd46ba5e7a3
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 12:48:42 2024
Disallow class merging when instance field merging may lead to IAE
Bug: b/347676160
Change-Id: I521dc342150e8374992dd453379915e8a5e36db8
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
https://r8-review.googlesource.com/94142
Branch: main
commit 9ea42409d593d89dce0184f00728ccd46ba5e7a3
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 12:48:42 2024
Disallow class merging when instance field merging may lead to IAE
Bug:
Change-Id: I521dc342150e8374992dd453379915e8a5e36db8
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
je...@google.com <je...@google.com> #8
Project: r8
Branch: 8.5
commit e58b343a1aa4631008946e21ca3d00a8f151ae5e
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:38:13 2024
Disallow class merging when instance field merging may lead to IAE
Bug: b/347676160
Change-Id: I521dc342150e8374992dd453379915e8a5e36db8
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
https://r8-review.googlesource.com/94161
Branch: 8.5
commit e58b343a1aa4631008946e21ca3d00a8f151ae5e
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:38:13 2024
Disallow class merging when instance field merging may lead to IAE
Bug:
Change-Id: I521dc342150e8374992dd453379915e8a5e36db8
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
je...@google.com <je...@google.com> #9
Project: r8
Branch: 8.5
commit fe6ed811fc69f65b9cb62a4279b62f03d1cd1715
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:38:23 2024
Version 8.5.31
Bug: b/347676160
Change-Id: I1b2ece43a23b871c99d9cb8b70c29c50468752bb
M src/main/java/com/android/tools/r8/Version.java
https://r8-review.googlesource.com/94124
Branch: 8.5
commit fe6ed811fc69f65b9cb62a4279b62f03d1cd1715
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:38:23 2024
Version 8.5.31
Bug:
Change-Id: I1b2ece43a23b871c99d9cb8b70c29c50468752bb
M src/main/java/com/android/tools/r8/Version.java
sm...@google.com <sm...@google.com>
ch...@google.com <ch...@google.com> #10
Project: r8
Branch: 8.5
commit b5bc5b7266a51184e0ca97e6e9342766e51b8a1d
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:37:59 2024
Reproduce IAE from instance field merging
Bug: b/347676160
Change-Id: I0614da65d0a60f7f2d01d6a8aa92b9cadfabe005
A src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
A src/test/java/com/android/tools/r8/classmerging/horizontal/testclasses/InaccessibleFieldTypeMergingTestClasses.java
https://r8-review.googlesource.com/94160
Branch: 8.5
commit b5bc5b7266a51184e0ca97e6e9342766e51b8a1d
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:37:59 2024
Reproduce IAE from instance field merging
Bug:
Change-Id: I0614da65d0a60f7f2d01d6a8aa92b9cadfabe005
A src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
A src/test/java/com/android/tools/r8/classmerging/horizontal/testclasses/InaccessibleFieldTypeMergingTestClasses.java
to...@gmail.com <to...@gmail.com> #11
Project: r8
Branch: 8.4
commit 4c848f3563562011b284484a2f60c0f0a4a020d1
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:42:06 2024
Version 8.4.42
Bug: b/347676160
Change-Id: I5239ceba9bd57249447ef5f140f8122924d5513a
M src/main/java/com/android/tools/r8/Version.java
https://r8-review.googlesource.com/94163
Branch: 8.4
commit 4c848f3563562011b284484a2f60c0f0a4a020d1
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:42:06 2024
Version 8.4.42
Bug:
Change-Id: I5239ceba9bd57249447ef5f140f8122924d5513a
M src/main/java/com/android/tools/r8/Version.java
ch...@google.com <ch...@google.com> #12
Project: r8
Branch: 8.4
commit b4c22c95d196d99507fa9c6fea954cf5f215662c
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:41:52 2024
Disallow class merging when instance field merging may lead to IAE
Bug: b/347676160
Change-Id: I521dc342150e8374992dd453379915e8a5e36db8
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
https://r8-review.googlesource.com/94125
Branch: 8.4
commit b4c22c95d196d99507fa9c6fea954cf5f215662c
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:41:52 2024
Disallow class merging when instance field merging may lead to IAE
Bug:
Change-Id: I521dc342150e8374992dd453379915e8a5e36db8
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
je...@google.com <je...@google.com> #13
Project: r8
Branch: 8.4
commit 1acc8c9b4646032a05e9814509cb01ff18b0a72e
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:39:29 2024
Reproduce IAE from instance field merging
Bug: b/347676160
Change-Id: I0614da65d0a60f7f2d01d6a8aa92b9cadfabe005
A src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
A src/test/java/com/android/tools/r8/classmerging/horizontal/testclasses/InaccessibleFieldTypeMergingTestClasses.java
https://r8-review.googlesource.com/94162
Branch: 8.4
commit 1acc8c9b4646032a05e9814509cb01ff18b0a72e
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Fri Jun 28 13:39:29 2024
Reproduce IAE from instance field merging
Bug:
Change-Id: I0614da65d0a60f7f2d01d6a8aa92b9cadfabe005
A src/test/java/com/android/tools/r8/classmerging/horizontal/InaccessibleFieldTypeMergingTest.java
A src/test/java/com/android/tools/r8/classmerging/horizontal/testclasses/InaccessibleFieldTypeMergingTestClasses.java
to...@gmail.com <to...@gmail.com> #14
This should now be fixed in R8 8.4.42 and 8.5.31.
ff...@gmail.com <ff...@gmail.com> #15
I am sorry to say that the IllegalAccessError still exists in TestGradleBug, using either R8 8.4.42 or 8.5.31.
sh...@gmail.com <sh...@gmail.com> #16
Project: r8
Branch: 8.4
commit f550fa0f75062c1c92ab0667b709bb16337eb12f
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Tue Jul 02 09:18:30 2024
Analyze all field accesses for limited horizontal class merging
Bug: b/347676160
Change-Id: If1dc4510124582233df02d6b4c2595f34eee2fd5
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
https://r8-review.googlesource.com/94240
Branch: 8.4
commit f550fa0f75062c1c92ab0667b709bb16337eb12f
Author: Christoffer Adamsen <christofferqa@google.com>
Date: Tue Jul 02 09:18:30 2024
Analyze all field accesses for limited horizontal class merging
Bug:
Change-Id: If1dc4510124582233df02d6b4c2595f34eee2fd5
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
Description
Caught exception: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
Caught exception: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
In addition to the error showing up, notice how the path isn't helpful ($).
I attached with a debugger and found that it's reading this file:
<path-to-my-project>/app/build/outputs/apk/debug
which contains (all on one line)
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-debug.apk","fullName":"debug","baseName":"debug","dirName":""},"path":"app-debug.apk","properties":{}}]
and it's called from here:
<init>:45, JsonSyntaxException (com.google.gson)
read:226, ReflectiveTypeAdapterFactory$Adapter (com.google.gson.internal.bind)
fromJson:927, Gson (com.google.gson)
fromJson:865, Gson (com.google.gson)
load:181, ExistingBuildElements$Companion (com.android.build.gradle.internal.scope)
loadFrom:119, ExistingBuildElements$Companion (com.android.build.gradle.internal.scope)
from:97, ExistingBuildElements$Companion (com.android.build.gradle.internal.scope)
loadFile:73, EarlySyncBuildOutput$Companion (com.android.build.gradle.internal.ide)
load:64, EarlySyncBuildOutput$Companion (com.android.build.gradle.internal.ide)
load:-1, EarlySyncBuildOutput (com.android.build.gradle.internal.ide)
lambda$get$2:55, BuildOutputsSupplier (com.android.build.gradle.internal.ide)
accept:-1, 1529725722 (com.android.build.gradle.internal.ide.BuildOutputsSupplier$$Lambda$761)
forEach:405, ImmutableList (com.google.common.collect)
get:49, BuildOutputsSupplier (com.android.build.gradle.internal.ide)
get:34, BuildOutputsSupplier (com.android.build.gradle.internal.ide)
getOutputs:174, AndroidArtifactImpl (com.android.build.gradle.internal.ide)
copyOutputs:153, IdeAndroidArtifactImpl (com.android.ide.common.gradle.model)
<init>:98, IdeAndroidArtifactImpl (com.android.ide.common.gradle.model)
lambda$new$0:78, IdeVariantImpl (com.android.ide.common.gradle.model)
apply:-1, 215796487 (com.android.ide.common.gradle.model.IdeVariantImpl$$Lambda$730)
computeIfAbsent:59, ModelCache (com.android.ide.common.gradle.model)
<init>:75, IdeVariantImpl (com.android.ide.common.gradle.model)
lambda$create$4:140, IdeAndroidProjectImpl (com.android.ide.common.gradle.model)
apply:-1, 779670639 (com.android.ide.common.gradle.model.IdeAndroidProjectImpl$$Lambda$729)
computeIfAbsent:59, ModelCache (com.android.ide.common.gradle.model)
copy:86, IdeModel (com.android.ide.common.gradle.model)
create:136, IdeAndroidProjectImpl (com.android.ide.common.gradle.model)
create:91, IdeAndroidProjectImpl (com.android.ide.common.gradle.model)
createAndroidProject:381, LintGradleExecution (com.android.tools.lint.gradle)
analyze:90, LintGradleExecution (com.android.tools.lint.gradle)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
runLint:38, ReflectiveLintRunner (com.android.tools.lint.gradle.api)
runLint:114, LintBaseTask (com.android.build.gradle.tasks)
lint:64, LintPerVariantTask (com.android.build.gradle.tasks)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
invoke:104, JavaMethod (org.gradle.internal.reflect)
doExecute:49, StandardTaskAction (org.gradle.api.internal.project.taskfactory)
execute:42, StandardTaskAction (org.gradle.api.internal.project.taskfactory)
execute:28, StandardTaskAction (org.gradle.api.internal.project.taskfactory)
execute:727, AbstractTask$TaskActionWrapper (org.gradle.api.internal)
execute:694, AbstractTask$TaskActionWrapper (org.gradle.api.internal)
run:568, ExecuteActionsTaskExecuter$3 (org.gradle.api.internal.tasks.execution)
execute:402, DefaultBuildOperationExecutor$RunnableBuildOperationWorker (org.gradle.internal.operations)
execute:394, DefaultBuildOperationExecutor$RunnableBuildOperationWorker (org.gradle.internal.operations)
execute:165, DefaultBuildOperationExecutor$1 (org.gradle.internal.operations)
execute:250, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:158, DefaultBuildOperationExecutor (org.gradle.internal.operations)
run:92, DefaultBuildOperationExecutor (org.gradle.internal.operations)
run:31, DelegatingBuildOperationExecutor (org.gradle.internal.operations)
executeAction:553, ExecuteActionsTaskExecuter (org.gradle.api.internal.tasks.execution)
executeActions:536, ExecuteActionsTaskExecuter (org.gradle.api.internal.tasks.execution)
access$300:109, ExecuteActionsTaskExecuter (org.gradle.api.internal.tasks.execution)
executeWithPreviousOutputFiles:276, ExecuteActionsTaskExecuter$TaskExecution (org.gradle.api.internal.tasks.execution)
execute:265, ExecuteActionsTaskExecuter$TaskExecution (org.gradle.api.internal.tasks.execution)
lambda$execute$1:33, ExecuteStep (org.gradle.internal.execution.steps)
get:-1, 381305341 (org.gradle.internal.execution.steps.ExecuteStep$$Lambda$681)
orElseGet:267, Optional (java.util)
execute:33, ExecuteStep (org.gradle.internal.execution.steps)
execute:26, ExecuteStep (org.gradle.internal.execution.steps)
execute:63, CleanupOutputsStep (org.gradle.internal.execution.steps)
execute:35, CleanupOutputsStep (org.gradle.internal.execution.steps)
execute:49, ResolveInputChangesStep (org.gradle.internal.execution.steps)
execute:34, ResolveInputChangesStep (org.gradle.internal.execution.steps)
execute:43, CancelExecutionStep (org.gradle.internal.execution.steps)
executeWithoutTimeout:73, TimeoutStep (org.gradle.internal.execution.steps)
execute:54, TimeoutStep (org.gradle.internal.execution.steps)
execute:34, CatchExceptionStep (org.gradle.internal.execution.steps)
execute:44, CreateOutputsStep (org.gradle.internal.execution.steps)
execute:54, SnapshotOutputsStep (org.gradle.internal.execution.steps)
execute:38, SnapshotOutputsStep (org.gradle.internal.execution.steps)
execute:49, BroadcastChangingOutputsStep (org.gradle.internal.execution.steps)
executeWithoutCache:153, CacheStep (org.gradle.internal.execution.steps)
execute:67, CacheStep (org.gradle.internal.execution.steps)
execute:41, CacheStep (org.gradle.internal.execution.steps)
execute:44, StoreExecutionStateStep (org.gradle.internal.execution.steps)
execute:33, StoreExecutionStateStep (org.gradle.internal.execution.steps)
execute:38, RecordOutputsStep (org.gradle.internal.execution.steps)
execute:24, RecordOutputsStep (org.gradle.internal.execution.steps)
executeBecause:92, SkipUpToDateStep (org.gradle.internal.execution.steps)
lambda$execute$0:85, SkipUpToDateStep (org.gradle.internal.execution.steps)
apply:-1, 673443880 (org.gradle.internal.execution.steps.SkipUpToDateStep$$Lambda$538)
map:215, Optional (java.util)
execute:55, SkipUpToDateStep (org.gradle.internal.execution.steps)
execute:39, SkipUpToDateStep (org.gradle.internal.execution.steps)
execute:76, ResolveChangesStep (org.gradle.internal.execution.steps)
execute:37, ResolveChangesStep (org.gradle.internal.execution.steps)
execute:36, MarkSnapshottingInputsFinishedStep (org.gradle.internal.execution.steps.legacy)
execute:26, MarkSnapshottingInputsFinishedStep (org.gradle.internal.execution.steps.legacy)
execute:94, ResolveCachingStateStep (org.gradle.internal.execution.steps)
execute:49, ResolveCachingStateStep (org.gradle.internal.execution.steps)
execute:79, CaptureStateBeforeExecutionStep (org.gradle.internal.execution.steps)
execute:53, CaptureStateBeforeExecutionStep (org.gradle.internal.execution.steps)
execute:74, ValidateStep (org.gradle.internal.execution.steps)
lambda$execute$2:78, SkipEmptyWorkStep (org.gradle.internal.execution.steps)
get:-1, 928618461 (org.gradle.internal.execution.steps.SkipEmptyWorkStep$$Lambda$435)
orElseGet:267, Optional (java.util)
execute:78, SkipEmptyWorkStep (org.gradle.internal.execution.steps)
execute:34, SkipEmptyWorkStep (org.gradle.internal.execution.steps)
execute:39, MarkSnapshottingInputsStartedStep (org.gradle.internal.execution.steps.legacy)
execute:40, LoadExecutionStateStep (org.gradle.internal.execution.steps)
execute:28, LoadExecutionStateStep (org.gradle.internal.execution.steps)
execute:33, DefaultWorkExecutor (org.gradle.internal.execution.impl)
executeIfValid:192, ExecuteActionsTaskExecuter (org.gradle.api.internal.tasks.execution)
execute:184, ExecuteActionsTaskExecuter (org.gradle.api.internal.tasks.execution)
execute:109, CleanupStaleOutputsExecuter (org.gradle.api.internal.tasks.execution)
execute:46, FinalizePropertiesTaskExecuter (org.gradle.api.internal.tasks.execution)
execute:62, ResolveTaskExecutionModeExecuter (org.gradle.api.internal.tasks.execution)
execute:57, SkipTaskWithNoActionsExecuter (org.gradle.api.internal.tasks.execution)
execute:56, SkipOnlyIfTaskExecuter (org.gradle.api.internal.tasks.execution)
execute:36, CatchExceptionTaskExecuter (org.gradle.api.internal.tasks.execution)
executeTask:77, EventFiringTaskExecuter$1 (org.gradle.api.internal.tasks.execution)
call:55, EventFiringTaskExecuter$1 (org.gradle.api.internal.tasks.execution)
call:52, EventFiringTaskExecuter$1 (org.gradle.api.internal.tasks.execution)
execute:416, DefaultBuildOperationExecutor$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:406, DefaultBuildOperationExecutor$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:165, DefaultBuildOperationExecutor$1 (org.gradle.internal.operations)
execute:250, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:158, DefaultBuildOperationExecutor (org.gradle.internal.operations)
call:102, DefaultBuildOperationExecutor (org.gradle.internal.operations)
call:36, DelegatingBuildOperationExecutor (org.gradle.internal.operations)
execute:52, EventFiringTaskExecuter (org.gradle.api.internal.tasks.execution)
execute:41, LocalTaskNodeExecutor (org.gradle.execution.plan)
execute:372, DefaultTaskExecutionGraph$InvokeNodeExecutorsAction (org.gradle.execution.taskgraph)
execute:359, DefaultTaskExecutionGraph$InvokeNodeExecutorsAction (org.gradle.execution.taskgraph)
execute:352, DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction (org.gradle.execution.taskgraph)
execute:338, DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction (org.gradle.execution.taskgraph)
lambda$run$0:127, DefaultPlanExecutor$ExecutorWorker (org.gradle.execution.plan)
execute:-1, 1971193656 (org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$$Lambda$594)
execute:191, DefaultPlanExecutor$ExecutorWorker (org.gradle.execution.plan)
executeNextNode:182, DefaultPlanExecutor$ExecutorWorker (org.gradle.execution.plan)
run:124, DefaultPlanExecutor$ExecutorWorker (org.gradle.execution.plan)
onExecute:64, ExecutorPolicy$CatchAndRecordFailures (org.gradle.internal.concurrent)
run:48, ManagedExecutorImpl$1 (org.gradle.internal.concurrent)
runWorker:1149, ThreadPoolExecutor (java.util.concurrent)
run:624, ThreadPoolExecutor$Worker (java.util.concurrent)
run:56, ThreadFactoryImpl$ManagedThreadRunnable (org.gradle.internal.concurrent)
run:748, Thread (java.lang)