[devel] __cxa_pure_virtual [#40700] FAILED MySQL.git=5.1.56-alt2
Alexey Tourbin
at на altlinux.ru
Чт Мар 17 07:26:50 UTC 2011
On Thu, Mar 17, 2011 at 01:07:49PM +0600, REAL wrote:
> >$ while read -r t sym; do printf '%s\t%s\t' $t $sym; echo $sym
> >|/usr/lib/rpm/mkset 22; done<.syms |grep poHhS1
> >W __cxa_pure_virtual set:poHhS1
> >$
> >
> >Кто виноват
> ХЗ.
>
> >и что будем делать?
> Ну давайте shared task. А то какие варианты?
Разобраться, почему так происходит.
$ rpm -ql amarok |xargs fgrep -l __cxa_pure_virtual |xargs -Ix -n1 /usr/lib/rpm/ldd --bindings x '' |& grep __cxa_pure_virtual |sort -u -k4,4 -k7,7
28807: binding file /usr/lib/kde3/bin/amarok [0] to /usr/lib64/libstdc++.so.6 [0]: normal symbol `__cxa_pure_virtual' [CXXABI_1.3]
28814: binding file /usr/lib/kde3/bin/amarokapp [0] to /usr/lib64/libmysqlclient.so.16 [0]: normal symbol `__cxa_pure_virtual' [libmysqlclient _16]
...
$ nm -D /usr/lib64/libstdc++.so.6 |fgrep __cxa_pure_virtual
00000000000ba8c0 T __cxa_pure_virtual
$ nm -D /usr/lib64/libmysqlclient.so.16 |fgrep __cxa_pure_virtual
00000000000b9ad0 W __cxa_pure_virtual
$ objdump -p /usr/lib/kde3/bin/amarok |grep -w NEEDED |egrep 'stdc|mysql'
NEEDED libstdc++.so.6
$ objdump -p /usr/lib/kde3/bin/amarokapp |grep -w NEEDED |egrep 'stdc|mysql'
NEEDED libmysqlclient.so.16
NEEDED libstdc++.so.6
$
Т.е. в libmysqlclient.so.16 имеется weak symbol, а в libstdc++.so.6 -
нормальный. Но libmysqlclient.so.16 в списке требуемых библиотек идёт
раньше, что по идее не дложно помешать предпочесть нормальный символ.
Может, Зинка взяла^W^Wglibc глючит?
Подробная информация о списке рассылки Devel