La méthode launch() de mon objet fait tout un tas de traitements dans une boucle : while (this->loopAgain) {...}
J'ai une autre méthode qui permet de stopper cette boucle (passage du booléen à false : crado mais fonctionnel).
J'appelle cette DLL depuis VB.
Le problème est le suivant :
La boucle accepte des connexions client (socket). Tant qu'aucun client ne se connecte, launch() et stop() fonctionnent parfaitement. Si un client se connecte puis se déconnecte... toujours pas de souci... je fais un appel à stop() et là ça crash sur la dernière accolade de ma méthode launch().
VB6 affiche le message d'erreur : L'exception Exception logicielle inconnue (0x....) s'est produite dans l'application à l'emplacement 0x....
Quant au débuggueur de VS2008, il m'informe de la pile des appels :
DLL2008.dll!__crt_debugger_hook() Unknown
DLL2008.dll!__report_gsfailure() Ligne 315 + 0x7 octets C
DLL2008.dll!maClasse::launch() Ligne 602 + 0x11 octets C++ <--dernière accolade de la définition de la méthode
DLL2008.dll!ThreadServer(void * lpParameter=0x02fa29c8) Ligne 15 C++
NB : lorsque j'utilise ma classe directement en C++ (SANS passer par ma DLL), ce scénario ne donne pas lieu à un incident.