#include "gateway_log.h" #include "WorkerThreadManager.h" #include class A { public: int Fun() { LOG_DEBUG("Fun before sleep"); sleep(8); LOG_DEBUG("Fun after sleep");return 0; } void Result(int a) { LOG_DEBUG("Result: " << a); } }; int main() { sd::auto_ptr workerThreadManager; A a; workerThreadManager->PushTask(boost::bind(&A::Fun, &a), boost::bind(&A::Result, &a, _1)); sleep(3); LOG_DEBUG("deleting workerThreadManager"); workerThreadManager.reset(); // <<<--- CRASH LOG_DEBUG("deleted workerThreadManager"); sleep(10); LOG_DEBUG("after sleep"); return 0; }