У меня есть довольно сложное многопоточное приложение (сервер), который время от времени будет врезаться в связи с утверждаете:shared_ptr Assertion рх =-не удался
/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.
Я был не в состоянии определить причину и был интересно, если это проблема с boost :: shared_ptr, или это я?
Я пробовал g ++ 4.4.3-4ubuntu5 и llvm-g ++ (GCC) 4.2.1 с оптимизацией и без оптимизации и libboost1.40-dev (= 1.40.0-4ubuntu4).
Многопоточные ошибки трудно определить. Поскольку вы работаете в Linux, нет причин не использовать valgrind - это поможет вам найти ошибку. – nos
Я использую valgrind экстенсивно и получаю нулевые ошибки (с memcheck) до тех пор, пока не произойдет утверждение. Я все еще изучаю, как интерпретировать сообщения об ошибках drd, поскольку большинство из них (конфликтная загрузка/сохранение по логическим/целочисленным типам), похоже, не проблема. – Horacio