diff --git a/src/server/sharedstate_pv.cpp b/src/server/sharedstate_pv.cpp index 20e9b58..9151391 100644 --- a/src/server/sharedstate_pv.cpp +++ b/src/server/sharedstate_pv.cpp @@ -345,7 +345,11 @@ void SharedPV::post(const pvd::PVStructure& value, FOR_EACH(monitors_t::const_iterator, it, end, monitors) { (*it)->post(value, changed); - p_monitor.push_back((*it)->shared_from_this()); + try { + p_monitor.push_back((*it)->shared_from_this()); + }catch(std::tr1::bad_weak_ptr& e){ + // ignore post to dead monitor + } } } FOR_EACH(xmonitors_t::iterator, it, end, p_monitor) {