[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