bazelbuild / bazelbuild/bazel

Arbitrary filename in cc_shared_library.shared_lib_name causes crash

Open
#26,029 1 comment 0 reactions 1 assignee Claimed by @comius View on GitHub
P2 team-Rules-CPP type: bug
Dominant language
Java
Stars
25.8k
Forks
4.6k
Avg merge
2d 20h
Merged PRs (30d)
72

Description

### Description of the bug:

Having a shared_cc_library with an arbitrary name in "shared_lib_name" leads to a crash:

```

FATAL: bazel crashed due to an internal error. Printing stack trace:
java.lang.RuntimeException: Unrecoverable error while evaluating node 'ConfiguredTargetKey{label=//:bar, config=BuildConfigurationKey[0de042f7f216bd39770efda4fe9ac141f679167720307fb3637d83903e80fc71]}' (requested by nodes 'ConfiguredTargetKey{label=//:bar, config=BuildConfigurationKey[e5d0b45255bbe29fcc274b3efed42ccbd4b88bf8d5a015d3138aed480339a787]}')
at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:547)
at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:435)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: net.starlark.java.eval.Starlark$UncheckedEvalException: IllegalArgumentException thrown during Starlark evaluation (//:bar)
at .link(:0)
at ._link(/virtual_builtins_bzl/common/cc/cc_common.bzl:129)
at ._cc_shared_library_impl(/virtual_builtins_bzl/common/cc/cc_shared_library.bzl:728)
Caused by: java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:127)
at com.google.devtools.build.lib.rules.cpp.SolibSymlinkAction.getDynamicLibrarySymlinkInternal(SolibSymlinkAction.java:228)
at com.google.devtools.build.lib.rules.cpp.SolibSymlinkAction.getDynamicLibrarySymlink(SolibSymlinkAction.java:168)
at com.google.devtools.build.lib.rules.cpp.CcLinkingHelper.getDynamicLibrarySolibSymlinkOutput(CcLinkingHelper.java:966)
at com.google.devtools.build.lib.rules.cpp.CcLinkingHelper.createDynamicLinkAction(CcLinkingHelper.java:755)
at com.google.devtools.build.lib.rules.cpp.CcLinkingHelper.createCcLinkActions(CcLinkingHelper.java:437)
at com.google.devtools.build.lib.rules.cpp.CcLinkingHelper.link(CcLinkingHelper.java:331)
at com.google.devtools.build.lib.rules.cpp.CcModule.link(CcModule.java:2429)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at net.starlark.java.eval.MethodDescriptor.call(MethodDescriptor.java:192)
at net.starlark.java.eval.BuiltinFunction.fastcall(BuiltinFunction.java:62)
at net.starlark.java.eval.Starlark.fastcall(Starlark.java:815)
at net.starlark.java.eval.Eval.evalCall(Eval.java:746)
at net.starlark.java.eval.Eval.eval(Eval.java:561)
at net.starlark.java.eval.Eval.execReturn(Eval.java:267)
at net.starlark.java.eval.Eval.exec(Eval.java:306)
at net.starlark.java.eval.Eval.execStatements(Eval.java:83)
at net.starlark.java.eval.Eval.execFunctionBody(Eval.java:67)
at net.starlark.java.eval.StarlarkFunction.fastcall(StarlarkFunction.java:208)
at net.starlark.java.eval.Starlark.fastcall(Starlark.java:815)
at net.starlark.java.eval.Eval.evalCall(Eval.java:746)
at net.starlark.java.eval.Eval.eval(Eval.java:561)
at net.starlark.java.eval.Eval.execAssignment(Eval.java:122)
at net.starlark.java.eval.Eval.exec(Eval.java:286)
at net.starlark.java.eval.Eval.execStatements(Eval.java:83)
at net.starlark.java.eval.Eval.execFunctionBody(Eval.java:67)
at net.starlark.java.eval.StarlarkFunction.fastcall(StarlarkFunction.java:208)
at net.starlark.java.eval.Starlark.fastcall(Starlark.java:815)
at com.google.devtools.build.lib.analysis.starlark.StarlarkRuleConfiguredTargetUtil.evalRule(StarlarkRuleConfiguredTargetUtil.java:100)
at com.google.devtools.build.lib.analysis.ConfiguredTargetFactory.createRule(ConfiguredTargetFactory.java:405)
at com.google.devtools.build.lib.analysis.ConfiguredTargetFactory.createConfiguredTarget(ConfiguredTargetFactory.java:202)
at com.google.devtools.build.lib.skyframe.SkyframeBuildView.createConfiguredTarget(SkyframeBuildView.java:1389)
at com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.createConfiguredTarget(ConfiguredTargetFunction.java:446)
at com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.compute(ConfiguredTargetFunction.java:370)
at com.google.devtools.build.skyframe.AbstractParallelEvaluator$Evaluate.run(AbstractParallelEvaluator.java:467)
at com.google.devtools.build.lib.concurrent.AbstractQueueVisitor$WrappedRunnable.run(AbstractQueueVisitor.java:435)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
```

### Which category does this issue belong to?

C++ Rules

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

Repo with an empty MODULE.bazel and:

BUILD.bazel:
```
cc_library(
name = "foo",
)

cc_shared_library(
name = "bar",
deps = [":foo"],
shared_lib_name = "bar.ext",
)
```

`bazel build :bar`

### Which operating system are you running Bazel on?

macOS

### What is the output of `bazel info release`?

release 8.2.1

I also tested on `last_green` with the same result.

### If `bazel info release` returns `development version` or `(@non-git)`, tell us how you built Bazel.

_No response_

### What's the output of `git remote get-url origin; git rev-parse HEAD` ?

```text
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
```

### If this is a regression, please try to identify the Bazel commit where the bug was introduced with bazelisk --bisect.

_No response_

### Have you found anything relevant by searching the web?

_No response_

### Any other information, logs, or outputs that you want to share?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.