free(): invalid pointer:
Publié : 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
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