[Libreoffice] [Bug 42865] MySQL native driver: free() on non-heap pointer; in debug mode abort()
Lionel Elie Mamane
lionel at mamane.lu
Mon Nov 14 02:44:47 PST 2011
On Mon, Nov 14, 2011 at 10:47:31AM +0100, Stephan Bergmann wrote:
> I must admit I'm confused. On my system,
> >~ objdump -T /usr/lib64/libstdc++.so.6 | grep _ZNSs4_Rep20_S_empty_rep_storageE
> >0000003e504f45a0 g DO .bss 0000000000000020 GLIBCXX_3.4 _ZNSs4_Rep20_S_empty_rep_storageE
> >
> >~ objdump -T /usr/lib64/libmysqlcppconn.so | grep _ZNSs4_Rep20_S_empty_rep_storageE
> >0000000000000000 DO *UND* 0000000000000000 GLIBCXX_3.4 _ZNSs4_Rep20_S_empty_rep_storageE
> >
> >~ objdump -t mysqlc/unxlngx6/lib/mysqlc.uno.so | grep _ZNSs4_Rep20_S_empty_rep_storageE
> >00000000003dbe40 l O .bss 0000000000000020 _ZNSs4_Rep20_S_empty_rep_storageE
> That is, libstdc++.so.6 exports the symbol with version GLIBCXX_3.4
> and libmysqlcppconn.so links against it, while mysqlc.uno.so emits
> its own definition of the symbol (as a local symbol, due to the map
> file). Do you have an idea why mysqlc.uno.so emits its own
> definition at all?
Now that you mention it, my *system* libmysqlcppconn.so also links
against the symbol:
$ objdump -T /usr/lib/libmysqlcppconn.so|grep _rep_st
0000000000000000 DO *UND* 0000000000000000 GLIBCXX_3.4 _ZNSs4_Rep20_S_empty_rep_storageE
But the LibreOffice-*internal* libmysqlcppconn defines the symbol as
"globally unique":
$ objdump -T ~/src/libreoffice/core/mysqlcppconn/unxlngx6/lib/libmysqlcppconn.so|grep _rep_st
000000000031bca0 u DO .bss 0000000000000020 Base _ZNSs4_Rep20_S_empty_rep_storageE
Hmm... Maybe it is a question of different version of G++/libstdc++,
but on my system, libmysqlcppconn.so defines symbol itself as "u". Or
would that be a change introduced by -D_GLIBCXX_DEBUG? Now, the weird
thing is that if I recompile my distro's libmysqlcppconn package, that
symbol disappears *completely*:
$ objdump -T ~/src/mysqlcppconn/mysql-connector-c++-1.1.0/debian/libmysqlcppconn5/usr/lib/libmysqlcppconn.so.5.1.1.0 | grep -i _rep_st
$
Also compare:
$ ldd ~/src/libreoffice/core/mysqlcppconn/unxlngx6/lib/libmysqlcppconn.so
linux-vdso.so.1 => (0x00007fff89fef000)
libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0x00007f4de8623000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4de8407000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4de8102000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4de7e80000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4de7c6a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4de78e5000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f4de76ae000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f4de7496000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f4de727e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4de8d77000)
$ ldd ~/src/mysqlcppconn/mysql-connector-c++-1.1.0/debian/libmysqlcppconn5/usr/lib/libmysqlcppconn.so.5.1.1.0
linux-vdso.so.1 => (0x00007fff72ca9000)
libmysqlclient_r.so.16 => /usr/lib/libmysqlclient_r.so.16 (0x00007f7898da5000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7898aa1000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f789881e000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7898608000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7898284000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7898067000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f7897e30000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f7897c18000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f7897a00000)
/lib64/ld-linux-x86-64.so.2 (0x00007f78994f4000)
$ ldd /usr/lib/libmysqlcppconn.so.5.1.1.0
linux-vdso.so.1 => (0x00007fff1f4c3000)
libmysqlclient_r.so.16 => /usr/lib/libmysqlclient_r.so.16 (0x00007f7e9f79a000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7e9f496000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7e9f213000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7e9effd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7e9ec79000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7e9ea5c000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f7e9e825000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f7e9e60d000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f7e9e3f5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7e9fe77000)
libpthread disappearing, libmysqlclient_r.so.16 vs
libmysqlclient.so.16...
--
Lionel
More information about the LibreOffice
mailing list