Ho una piuttosto complessa applicazione multi-threaded (server) che di volta in volta andrà in crash a causa di un'asserzione:shared_ptr asserzione px = 0 fallito
/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.
sono stato in grado di individuare la causa ed è stato chiedendo se questo è un problema con boost :: shared_ptr o sono io?
Ho provato g ++ 4.4.3-4ubuntu5 e llvm-g ++ (GCC) 4.2.1 con ottimizzazione e senza ottimizzazione e libboost1.40-dev (= 1.40.0-4ubuntu4).
bug multithreading sono difficili da individuare. Dato che sei su Linux, non c'è motivo di non usare valgrind - ti aiuterà molto a trovare il bug. – nos
Sto usando valgrind estesamente e ottengo zero errori (con memcheck) fino a quando non si verifica l'asserzione. Sto ancora imparando come interpretare i messaggi di errore drd come la maggior parte di loro (carico di conflitto/archivio su tipi booleano/intero) non sembrano un problema. – Horacio