free(): invalid pointer:

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

free(): invalid pointer:

Message par Dominique MICOLLET » lun. janv. 19, 2009 3:19 pm

Re-bonjour,

J'ai le même problème que johan.....

Sur l'exemple minimal suivant :
---------------------------
#include <giac/giac.h>
#include <giac/misc.h>
using namespace std;
using namespace giac;


#include <string>
class cf
{
public :
static string simplifier(string argument) ;
static string normaliser(string argument,string liste_variable);
};


context ct;

int main(){
gen e(string("x^2-1"),&ct);
cout << factor(e,true,&ct) << endl;
}





string cf::simplifier(string argument)
{
return simplify(gen(argument,&ct),&ct).print();
}

string cf::normaliser(string argument,string liste_variable)
{
gen g=e2r(eval(gen(argument,&ct),&ct),
makevecteur(gen(liste_variable,&ct)),&ct);
return g.print();
}
--------------------------
J'ai l'erreur suivante (juste le début du message) :

miko@iem14:~/Bureau/tmp$ ./tryit
*** glibc detected *** ./tryit: free(): invalid pointer: 0x08ceb000 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb6d20624]
/lib/i686/cmov/libc.so.6(cfree+0x96)[0xb6d22826]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb6ef82e1]
./tryit[0x8049547]
./tryit(_ZNSt12_Vector_baseIN4giac3genESaIS1_EE13_M_deallocateEPS1_j+0x27)[0x8049571]
/usr/lib/libgiac.so.0(_ZNSt6vectorIN4giac3genESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_+0x2d0)[0xb7303c5a]
/usr/lib/libgiac.so.0(_ZNSt6vectorIN4giac3genESaIS1_EE9push_backERKS1_+0x5e)[0xb7300106]
/usr/lib/libgiac.so.0(_ZN4giac11tab2vecteurEPNS_3genE+0x42)[0xb77a92aa]
/usr/lib/libgiac.so.0[0xb7898331]
/usr/lib/libgiac.so.0[0xb7899339]
/usr/lib/libgiac.so.0[0xb7d39b75]
/usr/lib/libgiac.so.0[0xb72ba2cd]
/lib/ld-linux.so.2[0xb7fe6de4]
/lib/ld-linux.so.2[0xb7fe6f14]
/lib/ld-linux.so.2[0xb7fd984f]
======= Memory map: ========
.......


Cette erreur ne se produit plus lorsque la définition de la méthode cf::normaliser
est commentée. Noter qu'elle n'est nullement appellée par le programme principal.

L'exemple est compilé avec c++ -g tryit.cc -lgiac -lgmp -o tryit .
Sous debugger ddd, l'erreur apparaît avant même que le programme principal ne démarre : on a l'impression que l"une des librairies s'installe mal.

J'utilise la distribution du paquet debian disponible sur votre site, avec Debian/Lenny.

Dès que j'aurais réussi à compiler localement la librairie, je verrai si cela fait une différence.

Cordialement

Dominique MICOLLET
Cordialement

Dominique MICOLLET

Dominique MICOLLET
Messages : 52
Inscription : jeu. janv. 11, 2007 10:39 am
Localisation : Université de Bourgogne - France

Message par Dominique MICOLLET » lun. janv. 19, 2009 3:37 pm

Re^{Je sais plus combien}bonjour,

Le problème évoqué disparait dès lors qu'on installe la version compilée localement de giac.

En particulier lors les compilation j'obtenais un message :

/usr/include/c++/4.3/backward/backward_warning.h:33:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.

qui n'apparait plus : je soupçonne donc une incompatibilité de bibliothèques ou de compilateur.

Cordialement

Dominique MICOLLET
Cordialement

Dominique MICOLLET

Répondre