open-feature / open-feature/cpp-sdk-contrib

Abseil import causes errors (workaround implemented, issue for further investigation)

Open
#57 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
2
Forks
3
Avg merge
1d 3h
Merged PRs (30d)
5

Description

Suddenly, importing abseil is causing some compilation errors. I don't exactly know why, gemini suggested it might be related to new compiler/linker. Currently the error is mitigated by special compilation flags in .bazelrc introduced in #42 but we should investigate further later on.

Logs from failing build:

ERROR: /usr/local/google/home/molko/.cache/bazel/_bazel_molko/a6a051c6b85de9df9df849c53c646ced/external/abseil-cpp+/absl/base/BUILD.bazel:247:11: Linking external/abseil-cpp+/absl/base/libbase.so failed: (Exit 1): gcc failed: error executing CppLink command (from target @@abseil-cpp+//absl/base:base) /usr/bin/gcc @bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/libbase.so-0.params

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o(.sframe+0x30): error: relocation refers to local symbol ".text._ZStanSt12memory_orderSt23__memory_order_modifier" [5], which is defined in a discarded section
  section group signature: "std::operator&(std::memory_order, std::__memory_order_modifier)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/cycleclock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x1c): error: relocation refers to local symbol ".text._ZStorSt12memory_orderSt23__memory_order_modifier" [5], which is defined in a discarded section
  section group signature: "std::operator|(std::memory_order, std::__memory_order_modifier)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x30): error: relocation refers to local symbol ".text._ZStanSt12memory_orderSt23__memory_order_modifier" [6], which is defined in a discarded section
  section group signature: "std::operator&(std::memory_order, std::__memory_order_modifier)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/cycleclock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x44): error: relocation refers to local symbol ".text._ZSt24__cmpexch_failure_order2St12memory_order" [7], which is defined in a discarded section
  section group signature: "std::__cmpexch_failure_order2(std::memory_order)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x58): error: relocation refers to local symbol ".text._ZSt23__cmpexch_failure_orderSt12memory_order" [8], which is defined in a discarded section
  section group signature: "std::__cmpexch_failure_order(std::memory_order)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x6c): error: relocation refers to local symbol ".text._ZSt32__is_valid_cmpexch_failure_orderSt12memory_order" [9], which is defined in a discarded section
  section group signature: "std::__is_valid_cmpexch_failure_order(std::memory_order)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x120): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal15SchedulingGuard19DisableReschedulingEv" [21], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingGuard::DisableRescheduling()"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x134): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal15SchedulingGuard18EnableReschedulingEb" [22], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingGuard::EnableRescheduling(bool)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x148): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal12SpinLockWakeEPSt6atomicIjEb" [23], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SpinLockWake(std::atomic<unsigned int>*, bool)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x15c): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal16SchedulingHelperC2ENS1_14SchedulingModeE" [24], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingHelper::SchedulingHelper(absl::lts_20250814::base_internal::SchedulingMode)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x170): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal16SchedulingHelperD2Ev" [25], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingHelper::~SchedulingHelper()"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x184): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal11ControlWordEPNS0_9once_flagE" [26], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::ControlWord(absl::lts_20250814::once_flag*)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/sysinfo.pic.o(.sframe+0x198): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal18UnscaledCycleClock3NowEv" [27], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::UnscaledCycleClock::Now()"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0x1c): error: relocation refers to local symbol ".text._ZStorSt12memory_orderSt23__memory_order_modifier" [4], which is defined in a discarded section
  section group signature: "std::operator|(std::memory_order, std::__memory_order_modifier)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0x30): error: relocation refers to local symbol ".text._ZStanSt12memory_orderSt23__memory_order_modifier" [5], which is defined in a discarded section
  section group signature: "std::operator&(std::memory_order, std::__memory_order_modifier)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/cycleclock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0x44): error: relocation refers to local symbol ".text._ZSt24__cmpexch_failure_order2St12memory_order" [6], which is defined in a discarded section
  section group signature: "std::__cmpexch_failure_order2(std::memory_order)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0x58): error: relocation refers to local symbol ".text._ZSt23__cmpexch_failure_orderSt12memory_order" [7], which is defined in a discarded section
  section group signature: "std::__cmpexch_failure_order(std::memory_order)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0x6c): error: relocation refers to local symbol ".text._ZSt32__is_valid_cmpexch_failure_orderSt12memory_order" [8], which is defined in a discarded section
  section group signature: "std::__is_valid_cmpexch_failure_order(std::memory_order)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0xa8): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal15SchedulingGuard19DisableReschedulingEv" [13], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingGuard::DisableRescheduling()"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0xbc): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal15SchedulingGuard18EnableReschedulingEb" [14], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingGuard::EnableRescheduling(bool)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0xd0): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal12SpinLockWakeEPSt6atomicIjEb" [15], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SpinLockWake(std::atomic<unsigned int>*, bool)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0xe4): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal16SchedulingHelperC2ENS1_14SchedulingModeE" [16], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingHelper::SchedulingHelper(absl::lts_20250814::base_internal::SchedulingMode)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0xf8): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal16SchedulingHelperD2Ev" [17], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::SchedulingHelper::~SchedulingHelper()"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/thread_identity.pic.o(.sframe+0x10c): error: relocation refers to local symbol ".text._ZN4absl12lts_2025081413base_internal11ControlWordEPNS0_9once_flagE" [18], which is defined in a discarded section
  section group signature: "absl::lts_20250814::base_internal::ControlWord(absl::lts_20250814::once_flag*)"
  prevailing definition is from bazel-out/k8-fastbuild/bin/external/abseil-cpp+/absl/base/_objs/base/spinlock.pic.o
collect2: error: ld returned 1 exit status
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 10.575s, Critical Path: 8.90s
INFO: 200 processes: 23 action cache hit, 41 internal, 159 linux-sandbox.
ERROR: Build did NOT complete successfully

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the failing Bazel target external/abseil-cpp+/absl/base:base and the special compilation flags in .bazelrc introduced in #42. Reproduce the linker failure with the provided error output and investigate the compiler, linker, and Abseil configuration involved. Done means identifying the underlying cause and determining whether the workaround can be removed or replaced.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.