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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
datas->log.setLogName("spv-numeroteur");
avec comme sortie de valgrind :
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)
il semble donc que le programme plante sur la chaîne "spv-numeroteur" ?!?
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
mafonction("une chaine statique");
fonction dans laquelle il y a une conversion de char * vers une string.


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)