Skip to content

Bazel HEAD OOMs during analysis phase when JavaPluginInfo provides Java outputs information #14287

@Bencodes

Description

@Bencodes

Description of the problem / feature request:

Bazel HEAD runs out of memory during the analysis phase of a build.

I did a git bisect tracking the issue back to this commit f73e28c as the culprit.

The stacktrace that eventually comes out:

(19:11:00) FATAL: bazel ran out of memory and crashed. Printing stack trace:
net.starlark.java.eval.Starlark$UncheckedEvalError: OutOfMemoryError thrown during Starlark evaluation (//instant-features/rider/last-mile/fieldwork/stationdetail/plugins:lib_kt)
        at <starlark>.compile(<builtin>:0)
        at <starlark>._run_kt_java_builder_actions(/private/var/tmp/_bazel_blee/499a001013731d09bffd82f8601a3161/external/io_bazel_rules_kotlin/kotlin/internal/jvm/compile.bzl:780)
        at <starlark>.kt_jvm_produce_jar_actions(/private/var/tmp/_bazel_blee/499a001013731d09bffd82f8601a3161/external/io_bazel_rules_kotlin/kotlin/internal/jvm/compile.bzl:517)
        at <starlark>.kt_jvm_library_impl(/private/var/tmp/_bazel_blee/499a001013731d09bffd82f8601a3161/external/io_bazel_rules_kotlin/kotlin/internal/jvm/impl.bzl:235)
Caused by: java.lang.OutOfMemoryError: Java heap space
        at java.base/java.util.Arrays.copyOf(Unknown Source)
        at com.google.common.collect.ImmutableList.asImmutableList(ImmutableList.java:371)
        at com.google.common.collect.ImmutableList$Builder.build(ImmutableList.java:871)
        at com.google.devtools.build.lib.rules.java.JavaPluginInfo.merge(JavaPluginInfo.java:179)
        at com.google.devtools.build.lib.rules.java.JavaInfoBuildHelper.mergeExportedJavaPluginInfo(JavaInfoBuildHelper.java:238)
        at com.google.devtools.build.lib.rules.java.JavaInfoBuildHelper.createJavaCompileAction(JavaInfoBuildHelper.java:298)
        at com.google.devtools.build.lib.rules.java.JavaStarlarkCommon.createJavaCompileAction(JavaStarlarkCommon.java:118)
        at jdk.internal.reflect.GeneratedMethodAccessor163.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at net.starlark.java.eval.MethodDescriptor.call(MethodDescriptor.java:162)
        at net.starlark.java.eval.BuiltinFunction.fastcall(BuiltinFunction.java:77)
        at net.starlark.java.eval.Starlark.fastcall(Starlark.java:619)
        at net.starlark.java.eval.Eval.evalCall(Eval.java:672)
        at net.starlark.java.eval.Eval.eval(Eval.java:489)
        at net.starlark.java.eval.Eval.execAssignment(Eval.java:109)
        at net.starlark.java.eval.Eval.exec(Eval.java:268)
        at net.starlark.java.eval.Eval.execStatements(Eval.java:82)
        at net.starlark.java.eval.Eval.execIf(Eval.java:205)
        at net.starlark.java.eval.Eval.exec(Eval.java:283)
        at net.starlark.java.eval.Eval.execStatements(Eval.java:82)
        at net.starlark.java.eval.Eval.execFunctionBody(Eval.java:66)
        at net.starlark.java.eval.StarlarkFunction.fastcall(StarlarkFunction.java:191)
        at net.starlark.java.eval.Starlark.fastcall(Starlark.java:619)
        at net.starlark.java.eval.Eval.evalCall(Eval.java:672)
        at net.starlark.java.eval.Eval.eval(Eval.java:489)
        at net.starlark.java.eval.Eval.execAssignment(Eval.java:109)
        at net.starlark.java.eval.Eval.exec(Eval.java:268)
        at net.starlark.java.eval.Eval.execStatements(Eval.java:82)
        at net.starlark.java.eval.Eval.execIf(Eval.java:205)
        at net.starlark.java.eval.Eval.exec(Eval.java:283)
        at net.starlark.java.eval.Eval.execStatements(Eval.java:82)

Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

Create a large java project that has lots of java plugins attached to each target. I'm able to repro with one of our smaller apps which has about 583 java targets, most of which have annotation processors.

Metadata

Metadata

Assignees

Labels

P2We'll consider working on this in future. (Assignee optional)team-Rules-JavaIssues for Java rules

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions