ich eine ziemlich komplexe Multi-Threaded-Anwendung habe (Server), dass aufgrund einer Assertion von Zeit zu Zeit zum Absturz:Shared_ptr Assertion px = 0 fehlgeschlagen
/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.
ich nicht in der Lage gewesen, die Ursache zu finden und war frage mich, ob das ein Problem mit boost :: shared_ptr ist oder ich?
Ich versuchte g ++ 4.4.3-4ubuntu5 und llvm-g ++ (GCC) 4.2.1 mit Optimierung und ohne Optimierung und libboost1.40-dev (= 1.40.0-4ubuntu4).
Multithreading Bugs sind schwer zu lokalisieren. Da Sie Linux verwenden, gibt es keinen Grund, Valgrind nicht zu verwenden - es hilft Ihnen, den Fehler sehr zu finden. – nos
Ich benutze Valgrind ausgiebig und ich bekomme Null Fehler (mit memcheck), bis die Bestätigung auftritt. Ich lerne immer noch, wie man drd Fehlermeldungen interpretiert, da die meisten von ihnen (Konflikt laden/speichern auf booleschen/Integer-Typen) kein Problem scheinen. – Horacio