boostorg / boostorg/stacktrace

`-static-libstdc++` with `stacktrace_from_exception` produces duplicate symbol `__cxa_allocate_exception`

Đang mở
#208 6 bình luận 0 reaction 0 người được giao Xem trên GitHub
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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.