Bonjour,
c'est un peu découragé que je poste (après avoir passé des heures là dessus), en espérant que quelqu'un voit le problème (qui doit être évident ...).
Bon, j'ai un petit programme avec plusieurs threads (pour l'heure deux, mais le deuxième thread n'a pas le temps de démarrer), dont les fonctions "main" sont placées dans des libraries différentes.
Le chargement des lib, et des symboles de fonctions se passe bien, et j'ai le temps d'appeler la fonction init de la première lib.
À l'appel de la fonction start de la première lib, j'ai droit à un segfault ici :
avec comme sortie de valgrind :
Code : Sélectionner tout - Visualiser dans une fenêtre à part datas->log.setLogName("spv-numeroteur");
il semble donc que le programme plante sur la chaîne "spv-numeroteur" ?!?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Process terminating with default action of signal 11 (SIGSEGV) Access not within mapped region at address 0xFFFFFFF4 at 0x4234E58: std::string::assign(char const*, unsigned) (in /usr/lib/libstdc++.so.6.0.9) by 0x4234FC4: std::string::operator=(char const*) (in usr/lib/libstdc++.so.6.0.9) by 0x805E0FF: Log::setLogName(char const*) (Log.hpp:143) by 0x5193D1B: init (main.cpp:36) by 0x805DC87: main (main.cpp:104)
Que nenni, me disant que j'ai fait déborder la pile, je fais de braves new pour toutes mes variables, mais rien n'y fait.
Que nenni, je stocke cette chaîne dans une variable qui a été allouée auparavent, mais le programme plante alors plus loin sur le prochain appel du type :
fonction dans laquelle il y a une conversion de char * vers une string.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mafonction("une chaine statique");
Sniff, quelqu'un aurait-il une idée ?
P.S.:
libairies : STL, Boost, dl
plateforme : linux 2.6.17
glibc : 2.6-2
P.P.S :
si je n'ai pas posté dans le bon forum, n'hésitez pas à le signalez (j'ai un peu hésiter :-p)
Partager