[MDEV-4020] libmyodbc relocation error with MariaDB on CentOS 5 Created: 2013-01-10 Updated: 2014-06-12 Resolved: 2013-04-03 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | 10.0.0, 5.5.28a |
| Fix Version/s: | 5.5.31, 5.3.12 |
| Type: | Bug | Priority: | Major |
| Reporter: | Nicolay Vizovitin (Inactive) | Assignee: | Daniel Bartholomew |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | upstream | ||
| Environment: |
x86_64 System: Linux a10-52-75-225.qa.plesk.ru 2.6.18-028stab099.3 #1 SMP Wed Mar 7 15:20:22 MSK 2012 x86_64 x86_64 x86_64 GNU/Linux |
||
| Description |
|
libmyodbc on this system is not usable with MariaDB MySQL compatibility layer (MariaDB-compat) due to relocation error. This can be demonstrated with isql or iusql utilities from unixODBC package (unixODBC64 will do as well):
This assumes following sample odbc configuration:
This was done on CentOS 5 x64 machine with MariaDB 10.0, but same issues were observed with MariaDB 5.5. Also this most probably happens on other architectures and RedHat el5, maybe on RedHat/CentOS 6 as well. |
| Comments |
| Comment by Elena Stepanova [ 2013-01-11 ] |
|
I'm getting the same error with the MySQL very own library: [[root@localhost /]# echo "" | isql -b apsc |
| Comment by Elena Stepanova [ 2013-01-11 ] |
|
Also found these bug reports: Wlad, could you please take a look to see if there is anything that can and needs to be done on our side? |
| Comment by Vladislav Vaintroub [ 2013-01-11 ] |
|
It appears to be a CentOS problem, and I'm not sure how we can help here. Problem 1) The actual problem is that myodbc should not be built with shared client, because it uses a bunch of functions that are not in MySQL API (strmov, strxmov, srtrend, list_add, etc). MyODBC was always built with static client library (which is helpfully compiled with -fPIC, so linking it tio shared libraries is always possible) Problem 2) CentOS binaries, distributed by both MySQL and MariaDB (and, I'm pretty sure Percona) do not have strmov() defined. CentOS own MySQL "fork" has strmov defined, due to the patch http://bazaar.launchpad.net/~ius-coredev/ius/mysqlclient16/view/3/SOURCES/mysql-strmov.patch . That patch breaks a lot of things, and you experience that break. Not only MariaDB is affected, stock MySQL is affected too How to fix:
|
| Comment by Vladislav Vaintroub [ 2013-01-11 ] |
|
Colin, since I suspect you might know how to contact CentOS folks to file a bugreport (but if you do not , please assign back, I'll find that out) |
| Comment by Vladislav Vaintroub [ 2013-01-11 ] |
|
In 5.5 RPMs, the fixed 5.3 libraries will appear only after the next 5.5 after 5.3.12 |
| Comment by Vladislav Vaintroub [ 2013-04-03 ] |
|
5.3.12 that was released in January has this problem fixed. objdump -T /path/to/libmysqlclient_r.so.16 |grep strmov However, shared-compat package that comes with 5.5.30 seems to come with outdated libmysqlclient*.so.16 in shared-compat.rpm (the above objdump command does not list strmov). A user recently posted comment about that to Daniel, can you check whether automation works ok here? I do not know much about how creation of compat packages work, I assume you do. If not , please to reassign to serg. |
| Comment by Daniel Bartholomew [ 2013-04-03 ] |
|
Ok, I think the fix is to update the mariadb-shared rpms we use to the 5.3.12 version (they're from an older 5.3 version now). I'll make the update, backing up the old rpms first. |
| Comment by Daniel Bartholomew [ 2013-04-03 ] |
|
Wlad has confirmed that the changes I made in buildbot have fixed this issue. The next release of 5.5 will have the fix. |
| Comment by David Zambonini [ 2014-06-12 ] |
|
Sorry, I do not know if this is the correct way to report this but there appears to be a regression in this workaround – using MariaDB 5.5.38 (from yum.mariadb.org);
/usr/bin/isql: relocation error: /usr/lib/libmyodbc3.so: symbol strmov, version libmysqlclient_15 not defined in file libmysqlclient.so.15 with link time reference
|