| Summary: | libtbbmalloc.so.2 из libtbb-2020.3-alt2.e2kv6.rpm: libstdc++.so.6 -> undefined __cxa_vec_ctor | ||
|---|---|---|---|
| Product: | Branch p10 | Reporter: | Alexander <ale> |
| Component: | tbb | Assignee: | Michael Shigorin <mike> |
| Status: | NEW --- | QA Contact: | qa-p10 <qa-p10> |
| Severity: | normal | ||
| Priority: | P5 | CC: | amakeenk, mike |
| Version: | не указана | ||
| Hardware: | e2k | ||
| OS: | Linux | ||
На x86_64 проблемы нет: # ldd -r /usr/lib64/libtbbmalloc.so.2 | grep -c undefined 0 |
Здравствуйте. Обнаружили проблему в пакете libtbb-2020.3-alt2.e2kv6.rpm: библиотека libtbbmalloc.so.2 имеет неразрешённый символ __cxa_vec_ctor, из‑за чего не загружается, если вызывается не из C++‑приложения (например, через LD_PRELOAD или из C‑кода). Доказательства: 1. DT_NEEDED у RPM‑версии не содержит libstdc++.so.6: $ readelf -d /var/lib/lxc/test/rootfs/usr/lib64/libtbbmalloc.so.2 | grep NEEDED NEEDED Shared library: [libdl.so.2] NEEDED Shared library: [librt.so.1] NEEDED Shared library: [libpthread.so.0] NEEDED Shared library: [libc.so.6] 2. При этом ldd -r показывает неразрешённый символ: $ ldd -r /var/lib/lxc/test/rootfs/usr/lib64/libtbbmalloc.so.2 ... undefined symbol: __cxa_vec_ctor 3. Сборка из исходников на той же системе корректна и содержит libstdc++.so.6 в DT_NEEDED: $ readelf -d /usr/lib64/libtbbmalloc.so.2 | grep NEEDED NEEDED Shared library: [libdl.so.2] NEEDED Shared library: [librt.so.1] NEEDED Shared library: [libpthread.so.0] NEEDED Shared library: [libstdc++.so.6] NEEDED Shared library: [libc.so.6] Ожидаемое поведение: libtbbmalloc.so.2 должен иметь DT_NEEDED: libstdc++.so.6, чтобы __cxa_vec_ctor резолвился при загрузке.