Closed Bug 2036411 Opened 4 months ago Closed 2 months ago

Intermittent [tier 2] package> /builds/worker/workspace/obj-build/gradle/build/mobile/android/android-components/components/concept/base/generated/source/buildConfig/androidTest/debug/mozilla/components/concept/base/test/BuildConfig | single tracking bug

Categories

(GeckoView :: General, defect, P5)

All
Android
defect

Tracking

(firefox151 unaffected, firefox152 wontfix, firefox153 fixed, firefox154 fixed)

RESOLVED FIXED
154 Branch
Tracking Status
firefox151 --- unaffected
firefox152 --- wontfix
firefox153 --- fixed
firefox154 --- fixed

People

(Reporter: intermittent-bug-filer, Assigned: RyanVM)

References

Details

(Keywords: intermittent-failure)

Attachments

(4 files)

Filed by: amarc [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=563861842&repo=mozilla-central&task=Awb1EAaZREez7iNuJQ1tfQ.0
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/Awb1EAaZREez7iNuJQ1tfQ/runs/0/artifacts/public/logs/live_backing.log


[task 2026-05-01T16:55:50.632+00:00] 16:55:50     INFO -  package> > Task :components:compose-browser-toolbar:mergeDebugAndroidTestResources
[task 2026-05-01T16:55:50.632+00:00] 16:55:50     INFO -  package> > Task :components:concept-ai-controls:compileDebugAndroidTestJavaWithJavac
[task 2026-05-01T16:55:50.633+00:00] 16:55:50     INFO -  package> > Task :components:concept-ai-controls:compileDebugAndroidTestSources
[task 2026-05-01T16:55:50.633+00:00] 16:55:50     INFO -  package>
[task 2026-05-01T16:55:50.633+00:00] 16:55:50     INFO -  package> > Task :components:concept-base:compileDebugAndroidTestJavaWithJavac FAILED
[task 2026-05-01T16:55:50.634+00:00] 16:55:50    ERROR -  package> /builds/worker/workspace/obj-build/gradle/build/mobile/android/android-components/components/concept/base/generated/source/buildConfig/androidTest/debug/mozilla/components/concept/base/test/BuildConfig.java:4: error: semanticdb-javac: com.sourcegraph.shaded.com.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field.  This could mean either that the input has been truncated or that an embedded message misreported its own length.
[task 2026-05-01T16:55:50.634+00:00] 16:55:50     INFO -  package> package mozilla.components.concept.base.test;
[task 2026-05-01T16:55:50.634+00:00] 16:55:50     INFO -  package> ^
[task 2026-05-01T16:55:50.635+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.InvalidProtocolBufferException.truncatedMessage(InvalidProtocolBufferException.java:84)
[task 2026-05-01T16:55:50.635+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.CodedInputStream$StreamDecoder.refillBuffer(CodedInputStream.java:2738)
[task 2026-05-01T16:55:50.635+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.CodedInputStream$StreamDecoder.readStringRequireUtf8(CodedInputStream.java:2290)
[task 2026-05-01T16:55:50.635+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$SymbolOccurrence.<init>(Semanticdb.java:18288)
[task 2026-05-01T16:55:50.635+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$SymbolOccurrence.<init>(Semanticdb.java:18229)
[task 2026-05-01T16:55:50.636+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$SymbolOccurrence$1.parsePartialFrom(Semanticdb.java:19451)
[task 2026-05-01T16:55:50.636+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$SymbolOccurrence$1.parsePartialFrom(Semanticdb.java:19445)
[task 2026-05-01T16:55:50.636+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.CodedInputStream$StreamDecoder.readMessage(CodedInputStream.java:2367)
[task 2026-05-01T16:55:50.636+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocument.<init>(Semanticdb.java:1697)
[task 2026-05-01T16:55:50.636+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocument.<init>(Semanticdb.java:1613)
[task 2026-05-01T16:55:50.637+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocument$1.parsePartialFrom(Semanticdb.java:3657)
[task 2026-05-01T16:55:50.637+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocument$1.parsePartialFrom(Semanticdb.java:3651)
[task 2026-05-01T16:55:50.637+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.CodedInputStream$StreamDecoder.readMessage(CodedInputStream.java:2367)
[task 2026-05-01T16:55:50.637+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocuments.<init>(Semanticdb.java:764)
[task 2026-05-01T16:55:50.637+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocuments.<init>(Semanticdb.java:714)
[task 2026-05-01T16:55:50.637+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocuments$1.parsePartialFrom(Semanticdb.java:1456)
[task 2026-05-01T16:55:50.638+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocuments$1.parsePartialFrom(Semanticdb.java:1450)
[task 2026-05-01T16:55:50.638+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:215)
[task 2026-05-01T16:55:50.638+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:232)
[task 2026-05-01T16:55:50.638+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:237)
[task 2026-05-01T16:55:50.638+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
[task 2026-05-01T16:55:50.638+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.google.protobuf.GeneratedMessageV3.parseWithIOException(GeneratedMessageV3.java:339)
[task 2026-05-01T16:55:50.639+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.Semanticdb$TextDocuments.parseFrom(Semanticdb.java:944)
[task 2026-05-01T16:55:50.639+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.SemanticdbTaskListener.appendSemanticdb(SemanticdbTaskListener.java:154)
[task 2026-05-01T16:55:50.639+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.SemanticdbTaskListener.onFinishedAnalyze(SemanticdbTaskListener.java:118)
[task 2026-05-01T16:55:50.639+00:00] 16:55:50     INFO -  package>   	at com.sourcegraph.shaded.com.sourcegraph.semanticdb_javac.SemanticdbTaskListener.finished(SemanticdbTaskListener.java:79)
[task 2026-05-01T16:55:50.639+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.api.ClientCodeWrapper$WrappedTaskListener.finished(ClientCodeWrapper.java:854)
[task 2026-05-01T16:55:50.640+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
[task 2026-05-01T16:55:50.640+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1397)
[task 2026-05-01T16:55:50.640+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1354)
[task 2026-05-01T16:55:50.640+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
[task 2026-05-01T16:55:50.640+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
[task 2026-05-01T16:55:50.640+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
[task 2026-05-01T16:55:50.640+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
[task 2026-05-01T16:55:50.641+00:00] 16:55:50     INFO -  package>   	at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
[task 2026-05-01T16:55:50.641+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.compiler.java.IncrementalCompileTask.call(IncrementalCompileTask.java:92)
[task 2026-05-01T16:55:50.641+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:94)
[task 2026-05-01T16:55:50.641+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
[task 2026-05-01T16:55:50.641+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:83)
[task 2026-05-01T16:55:50.641+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:50)
[task 2026-05-01T16:55:50.642+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:98)
[task 2026-05-01T16:55:50.642+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52)
[task 2026-05-01T16:55:50.642+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
[task 2026-05-01T16:55:50.642+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:52)
[task 2026-05-01T16:55:50.642+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:38)
[task 2026-05-01T16:55:50.642+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:46)
[task 2026-05-01T16:55:50.643+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:36)
[task 2026-05-01T16:55:50.643+00:00] 16:55:50     INFO -  package>   	at org.gradle.jvm.toolchain.internal.DefaultToolchainJavaCompiler.execute(DefaultToolchainJavaCompiler.java:57)
[task 2026-05-01T16:55:50.643+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.tasks.compile.JavaCompile.lambda$createToolchainCompiler$3(JavaCompile.java:206)
[task 2026-05-01T16:55:50.643+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.CleaningJavaCompiler.execute(CleaningJavaCompiler.java:53)
[task 2026-05-01T16:55:50.643+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory.lambda$createRebuildAllCompiler$0(IncrementalCompilerFactory.java:55)
[task 2026-05-01T16:55:50.644+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:70)
[task 2026-05-01T16:55:50.644+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:44)
[task 2026-05-01T16:55:50.644+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:66)
[task 2026-05-01T16:55:50.644+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:52)
[task 2026-05-01T16:55:50.644+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$1.call(CompileJavaBuildOperationReportingCompiler.java:64)
[task 2026-05-01T16:55:50.645+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$1.call(CompileJavaBuildOperationReportingCompiler.java:48)
[task 2026-05-01T16:55:50.645+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:210)
[task 2026-05-01T16:55:50.645+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:205)
[task 2026-05-01T16:55:50.645+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
[task 2026-05-01T16:55:50.645+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)
[task 2026-05-01T16:55:50.645+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)
[task 2026-05-01T16:55:50.646+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)
[task 2026-05-01T16:55:50.646+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:54)
[task 2026-05-01T16:55:50.646+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:48)
[task 2026-05-01T16:55:50.646+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:224)
[task 2026-05-01T16:55:50.646+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.tasks.compile.JavaCompile.performIncrementalCompilation(JavaCompile.java:165)
[task 2026-05-01T16:55:50.646+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:150)
[task 2026-05-01T16:55:50.647+00:00] 16:55:50     INFO -  package>   	at jdk.internal.reflect.GeneratedMethodAccessor1537.invoke(Unknown Source)
[task 2026-05-01T16:55:50.647+00:00] 16:55:50     INFO -  package>   	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[task 2026-05-01T16:55:50.647+00:00] 16:55:50     INFO -  package>   	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
[task 2026-05-01T16:55:50.647+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
[task 2026-05-01T16:55:50.647+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:45)
[task 2026-05-01T16:55:50.647+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
[task 2026-05-01T16:55:50.648+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.execute(IncrementalTaskAction.java:26)
[task 2026-05-01T16:55:50.648+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
[task 2026-05-01T16:55:50.648+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:259)
[task 2026-05-01T16:55:50.648+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:30)
[task 2026-05-01T16:55:50.648+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:27)
[task 2026-05-01T16:55:50.648+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
[task 2026-05-01T16:55:50.648+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)
[task 2026-05-01T16:55:50.649+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)
[task 2026-05-01T16:55:50.649+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)
[task 2026-05-01T16:55:50.649+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:48)
[task 2026-05-01T16:55:50.649+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:244)
[task 2026-05-01T16:55:50.649+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:227)
[task 2026-05-01T16:55:50.649+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:210)
[task 2026-05-01T16:55:50.650+00:00] 16:55:50     INFO -  package>   	at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:176)
[task 2026-05-01T16:55:50.650+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:167)
[task 2026-05-01T16:55:50.650+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:47)
[task 2026-05-01T16:55:50.650+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:137)
[task 2026-05-01T16:55:50.650+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:134)
[task 2026-05-01T16:55:50.650+00:00] 16:55:50     INFO -  package>   	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:210)

This started suspiciously close to when the Gradle 9.5.0 update landed in bug 2035694, but Claude's analysis suggests it may be exposing a pre-existing race rather than being the direct cause.

  1. build.gradle:153-157 attaches the semanticdb-javac plugin to every JavaCompile task with a single shared output dir: -targetroot:$topobjdir/mozsearch_java_index.
  2. In CI, topsrcdir = /builds/worker/checkouts/gecko but topobjdir = /builds/worker/workspace/obj-build — the objdir is not under the source root. So every generated file (BuildConfig.java, R.java, …) fails the plugin's absolutePath.startsWith(sourceroot) check.
  3. For files outside sourceroot, the plugin's default mode is INDEX_ANYWAY, which writes them to a shared META-INF/semanticdb/no-relative-path/ dir using a filename built from a per-task counter: String.format("%d.%s.semanticdb", ++noRelativePathCounter, filename). The counter is a per-JavaCompile-instance field that resets to 1 every task.
  4. So the first generated file in every module's compileDebugAndroidTestJavaWithJavac task gets the identical name 1.BuildConfig.java.semanticdb in the same shared directory.
  5. With org.gradle.parallel=true, multiple module compile tasks run concurrently. One does writeSemanticdb (file absent) while another sees the file exists and calls appendSemanticdb → Files.readAllBytes + TextDocuments.parseFrom on a file that's still mid-write → InvalidProtocolBufferException: input ended unexpectedly (a non-atomic read-modify-write on a shared path).

This explains every observed property:

  • It's always BuildConfig.java (counter 1 → guaranteed name collision across all modules).
  • The module varies run to run (concept-base in the filed log, lib-shake in your example) — it's whichever pair of parallel tasks loses the timing dice.
  • It's a truncated protobuf, not malformed content.

Setting --max-workers=1 for Android searchfox jobs fixes the problem at the cost of about a 10min hit to job runtime (~65min -> 75min). That seems like an OK penalty to pay here since I have very low confidence in trying to fix this on the scip-java side of things.
https://treeherder.mozilla.org/jobs?repo=try&group_state=expanded&revision=2e2adfe9eb798ff81518b633150c4ed767de88f0

Assignee: nobody → ryanvm

Updated Try push: https://treeherder.mozilla.org/jobs?repo=try&revision=23b4c8171dbc771397883b9e8468a6c3928cd3e6

I'm not setting bug 2035694 as the regressor since I don't think it directly caused it, but I do think it's reasonably likely to have been what perturbed the the underlying race condition being hit.

The suppression was wired as a finalizedBy task on generateSafeArgs, which only orders it
after generation, not before the Kotlin compile that consumes the generated sources. The
two then race, and under strict-serial scheduling the compile reliably wins and fails the
generated NavGraphDirections under -Werror. Fold the rewrite into each generateSafeArgs
task's own final action so the output is clean before the task completes.

The semanticdb-javac plugin writes generated sources, which live in the objdir outside
the sourceroot, into a shared targetroot using a per-task counter for their filenames.
Concurrent compile tasks then race on identically-named files such as
1.BuildConfig.java.semanticdb, reading one mid-write and failing to parse the corrupted
protobuf. Cap the worker pool to one for compile-all when the mozsearch plugin is enabled
so the indexing build runs strictly serially.

Pushed by rvandermeulen@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/8779034bc486 https://hg.mozilla.org/integration/autoland/rev/75bc0f19e6e1 Run the SafeArgs USELESS_CAST suppression before Kotlin compilation r=ahochheiden https://github.com/mozilla-firefox/firefox/commit/772ed8621340 https://hg.mozilla.org/integration/autoland/rev/7b6c44ffb28c Serialize the Searchfox Android indexing build to dodge semanticdb-javac races r=ahochheiden
Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → 154 Branch

The patch landed in nightly and beta is affected.
:RyanVM, is this bug important enough to require an uplift?

For more information, please visit BugBot documentation.

Flags: needinfo?(ryanvm)
Flags: needinfo?(ryanvm)

The suppression was wired as a finalizedBy task on generateSafeArgs, which only orders it
after generation, not before the Kotlin compile that consumes the generated sources. The
two then race, and under strict-serial scheduling the compile reliably wins and fails the
generated NavGraphDirections under -Werror. Fold the rewrite into each generateSafeArgs
task's own final action so the output is clean before the task completes.

Original Revision: https://phabricator.services.mozilla.com/D306513

Attachment #9601689 - Flags: approval-mozilla-beta?

firefox-beta Uplift Approval Request

  • User impact if declined/Reason for urgency: No user impact. Frequent CI failure and waste of resources.
  • Code covered by automated testing?: no
  • Fix verified in Nightly?: yes
  • Needs manual QE testing?: no
  • Steps to reproduce for manual QE testing: n/a
  • Risk associated with taking this patch: low
  • Explanation of risk level: No user impact, job still passes.
  • String changes made/needed?: none
  • Is Android affected?: yes
Attachment #9601690 - Flags: approval-mozilla-beta?

The semanticdb-javac plugin writes generated sources, which live in the objdir outside
the sourceroot, into a shared targetroot using a per-task counter for their filenames.
Concurrent compile tasks then race on identically-named files such as
1.BuildConfig.java.semanticdb, reading one mid-write and failing to parse the corrupted
protobuf. Cap the worker pool to one for compile-all when the mozsearch plugin is enabled
so the indexing build runs strictly serially.

Original Revision: https://phabricator.services.mozilla.com/D306514

Attachment #9601690 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9601689 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: