boostorg / boostorg/stacktrace
`-static-libstdc++` with `stacktrace_from_exception` produces duplicate symbol `__cxa_allocate_exception`
- Ngôn ngữ chính
- C++
- Star
- 494
- Fork
- 86
- Merge trung bình
- 8 ngày 20 giờ
- Pull request đã merge (30 ngày)
- 3
Mô tả
I'm trying to update our project (The XRP ledger) to Boost 1.88 and I'm seeing a linker error on x86 (where `stacktrace_from_exception` gets enabled by default):
```
/usr/bin/ld: /usr/bin/../lib/gcc/x86_64-linux-gnu/12/libstdc++.a(eh_alloc.o): in function `__cxa_allocate_exception':
(.text.__cxa_allocate_exception+0x0): multiple definition of `__cxa_allocate_exception'; /root/.conan2/p/b/boost4d02c12b1f707/p/lib/libboost_stacktrace_from_exception.a(from_exception.o):/root/.conan2/p/boost9ad4e6f6d8220/s/src/libs/stacktrace/build/../src/from_exception.cpp:248: first defined here
```
This only happens with `-static-libstdc++ -static-libgcc` options.
There seems to be no easy way to disable the component through conan. I tried something like
```
def configure(self):
self.options["boost"].extra_b2_flags = "boost.stacktrace.from_exception=off"
```
which results in
```
boost/1.88.0: WARN: Boost component 'stacktrace_from_exception' is missing libraries. Try building boost with '-o boost:without_stacktrace_from_exception'. (Option is not guaranteed to exist)
ERROR: boost/1.88.0: Error in package_info() method, line 2026
raise ConanException(f"These libraries were expected to be built, but were not built: {non_built}")
ConanException: These libraries were expected to be built, but were not built: {'boost_stacktrace_from_exception'}
```
Here is the real project breaking: https://github.com/XRPLF/rippled/actions/runs/16486148700/job/46611443287?pr=5570
Any help and suggestions are very welcome 🙏
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Start with libs/stacktrace/src/from_exception.cpp, especially the area around the reported line 248, and reproduce the linker failure using -static-libstdc++ and -static-libgcc. Review how the stacktrace_from_exception component is built and exposed through Conan, then verify that the duplicate __cxa_allocate_exception definition is resolved without breaking the component's expected library packaging.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp
- Lĩnh vực
- devtools
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 35/100