Skip to content

Comparison method violates its general contract! error across many Android tests. #103230

@keyonghan

Description

@keyonghan

Current status: #103230 (comment)

The root of this issue is Groovy dynamic dispatch.

The flutter teams current plan for this bug is to migrate all of our groovy code to kotlin as defined in #121541 which has the added benefit of removing a language from the set maintainers need to know. This is aligned with the android teams recommendations.

This bug might be solved by removing the groovy dynamic dispatch called code in #114660. This pr was supposed to do exactly that but instead converted the code to kotlin and still uses groovy dynamic dispatch.

Another possible work around without migrating code to kotlin is to use compileStatic which converts the groovy code to bytecode and restricts the use of incompatible code.

(previously #103230 (comment), #103230 (comment) )


(part of #97036)

Two flakes in recent 100 commits:
https://ci.chromium.org/ui/p/flutter/builders/prod/Windows%20build_tests_2_3/4557/overview
https://ci.chromium.org/ui/p/flutter/builders/prod/Windows%20build_tests_2_3/4552/overview

 > Configure project :
[        ] Evaluating root project 'android' using build file 'C:\b\s\w\ir\x\w\flutter\examples\hello_world\android\build.gradle'.
[        ] Loaded lock state for configuration ':classpath'
[+1604 ms] > Configure project :app
[        ] Evaluating project ':app' using build file 'C:\b\s\w\ir\x\w\flutter\examples\hello_world\android\app\build.gradle'.
[        ] Creating configuration androidTestUtil
[   +1 ms] FAILURE: Build failed with an exception.
[   +2 ms] * Where:
[        ] Script 'C:\b\s\w\ir\x\w\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 293
[        ] * What went wrong:
[        ] A problem occurred evaluating script.
[        ] > Failed to apply plugin class 'FlutterPlugin'.
[        ]    > Comparison method violates its general contract!
[        ] * Try:
[        ] Run with --debug option to get more log output. Run with --scan to get full insights.
[        ] * Exception is:
[        ] org.gradle.api.GradleScriptException: A problem occurred evaluating script.
[        ] 	at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
[        ] 	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.lambda$apply$0(DefaultScriptPluginFactory.java:133)
[        ] 	at org.gradle.configuration.DefaultScriptTarget.addConfiguration(DefaultScriptTarget.java:74)
[        ] 	at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:136)
[        ] 	at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:65)
[        ] 	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$3.execute(DefaultBuildOperationRunner.java:75)
[        ] 	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
[        ] 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
[        ] 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
[        ] 	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
[        ] 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
[        ] 	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
[        ] 	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
[        ] 	at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(BuildOperationScriptPlugin.java:62)
[        ] 	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:43)
[        ] 	at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:62)
[        ] 	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyScript(DefaultObjectConfigurationAction.java:149)
[        ] 	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$000(DefaultObjectConfigurationAction.java:42)
[        ] 	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$1.run(DefaultObjectConfigurationAction.java:75)
[        ] 	at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:183)
[        ] 	at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:49)
[        ] 	at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:37)
[        ] 	at org.gradle.api.Script$apply.callCurrent(Unknown Source)

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listc: flakeTests that sometimes, but not always, incorrectly passplatform-androidAndroid applications specificallyteam-androidOwned by Android platform teamtriaged-androidTriaged by Android platform team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions