Arbitrary filename in cc_shared_library.shared_lib_name causes crash
- 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
Assessment
This issue has not been assessed yet.