Je me heurte à un Pointeur non valide avec ODBC sur une machine CentOS 7 lors du développement d'une nouvelle configuration Asterisk (PBX).
Un serveur précédent avec une configuration identique (unixODBC version 2.3.1) fonctionne bien. Mais lorsque je réinstalle tout sur un nouveau serveur, j'obtiens l'erreur suivante en testant la connexion ODBC.
# isql -v asterisk-connector
*** Error in `isql': munmap_chunk(): invalid pointer: 0x0000000001cb2728 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7f5d4)[0x7f476735d5d4]
/usr/lib64/libmyodbc5.so(MySQLGetPrivateProfileStringW+0x104)[0x7f47605563c4]
/usr/lib64/libmyodbc5.so(ds_lookup+0x5d)[0x7f4760555ced]
/usr/lib64/libmyodbc5.so(MySQLConnect+0xc6)[0x7f47605394c6]
/lib64/libodbc.so.2(SQLConnect+0xa63)[0x7f4767f2b3b3]
isql[0x4028a9]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f47673003d5]
isql[0x402c39]
======= Memory map: ========
La configuration ODBC est la suivante :
==> /etc/odbc.ini <==
[asterisk-connector]
Description= MySQL connection to 'asterisk' database
Driver= MySQL
Database= asterisk
Server= localhost
User= asterisk
Password= secretpasswd
Port= 3306
Socket= /var/lib/mysql/mysql.sock
==> /etc/odbcinst.ini <==
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver64 = /usr/lib64/libmyodbc5w.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
À ce stade, j'ai l'impression d'avoir comparé les deux serveurs jusqu'au dernier morceau de leur disque et d'avoir parcouru l'internet à la recherche de problèmes similaires, et je n'ai plus aucune idée de ce qu'il faut faire.
SOLVED :
Ce problème est dû à l'utilisation d'un connecteur ODBC MySQL pour une base de données MariaDB incompatible.
Résolu en téléchargeant le bon pilote (dans mon cas http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64//mysql-connector-odbc-8.0.15-1.el7.x86_64.rpm ) et en modifiant le fichier odbcinst.ini comme suit :
[MySQL ODBC 8.0 Unicode Driver]
Driver=/usr/lib64/libmyodbc8w.so
UsageCount=1
[MySQL ODBC 8.0 ANSI Driver]
Driver=/usr/lib64/libmyodbc8a.so
UsageCount=1
Un grand merci à @Pimp Juice IT et à mon collègue !
J'espère que cela aidera les personnes qui rencontrent ce problème.