Oracle: OCIPClearMxCtr libclntsh.so = Segmentation Fault

10 novembre 2009 par zedtux Laisser une réponse »

Database CMYK 128x128

Je vient de tomber sur un problème assez casse burnes… et j’ai trouvé la solution !
Donc je partage !! :D

Comme vous le savez peut-être déjà, je travail sur Elcaro.
Mon objet qui utilise OCCI d’Oracle n’arrêtait pas de me faire un segmentation fault (erreur de segmentation) lorsque j’essayais de faire un oracle::occi::Environment::createEnvironment().

J’ai lancé le déboguer qui m’as sortis ceci:

#0  0×00007ffff164b77a in OCIPClearMxCtr () from /usr/lib/libclntsh.so.11.1
#1  0×00007ffff2d1c636 in oracle::occi::OCCIErrorGet(void*, unsigned int, unsigned char*, int*, unsigned char*, unsigned int, unsigned int) () from /usr/lib/libocci.so.11.1
#2  0×00007ffff2d115b1 in _ZN6oracle4occi16SQLExceptionImplC9EPvS2_i () from /usr/lib/libocci.so.11.1
#3  0×00007ffff2d1154e in oracle::occi::SQLExceptionImpl::SQLExceptionImpl(void*, void*, int) () from /usr/lib/libocci.so.11.1
#4  0×00007ffff2d12c29 in oracle::occi::SQLExceptionCreate(void*, int) () from /usr/lib/libocci.so.11.1
#5  0×00007ffff2d12e9c in oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned long), void* (*)(void*, void*, unsigned long), void (*)(void*, void*)) ()
from /usr/lib/libocci.so.11.1

Donc, la bibliothèque d’Oracle libclntsh.so.11.1 n’arrive pas à créer l’environnement, et pire que ca, elle crash complètement ! ( Merci Oracle encore une fois … >:| )

La Solution

Au début, je me suis dis, c’est la variable d’environnement ORACLE_HOME qui n’est pas définie.. Donc j’ai vérifié, et effectivement, elle ne l’était pas !
Donc, je la définie, je ré-essaie… pareil !

Rien à voire !

Puis, je suis tombé sur un poste qui m’a rappelé la variable d’environnement LD_LIBRARY_PATH !
J’ai donc modifié ma variable comme ceci:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/instantclient_11_1/

et voilà ! Problème résolut !!! 8)
( A adapter biensur à votre cas ! :D Il faut que vous mettiez le chemin vers le dossier contenant les fichiers .so d’Oracle.)

Publicité

Laisser un commentaire