J'ai une application multithread assez complexe (serveur) que de temps en temps se crasher à cause d'une assertion:shared_ptr Assertion px = 0 a échoué
/usr/include/boost/smart_ptr/shared_ptr.hpp:418: T* boost::shared_ptr< <template-parameter-1-1> >::operator->() const [with T = msg::Player]: Assertion `px != 0' failed.
Je suis incapable de déterminer la cause et était Je me demande si c'est un problème avec boost :: shared_ptr ou c'est moi?
J'ai essayé g ++ 4.4.3-4ubuntu5 et llvm-g ++ (GCC) 4.2.1 avec optimisation et sans optimisation et libboost1.40-dev (= 1.40.0-4ubuntu4).
Les bogues multithread sont difficiles à localiser. Puisque vous êtes sur linux, il n'y a aucune raison de ne pas utiliser valgrind - cela vous aidera à trouver le bogue. – nos
J'utilise valgrind intensivement et je reçois zéro erreur (avec memcheck) jusqu'à ce que l'affirmation se produise. J'apprends toujours comment interpréter les messages d'erreur drd comme la plupart d'entre eux (conflit charge/stocker sur les types booléens/entiers) ne semblent pas un problème. – Horacio