Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix high memory usage when exec events are done.
[simgrid.git] / src / s4u / s4u_Exec.cpp
index ab680d8..5ecdf6a 100644 (file)
@@ -34,13 +34,14 @@ void Exec::complete(Activity::State state)
 ExecPtr Exec::init()
 {
   auto pimpl = kernel::activity::ExecImplPtr(new kernel::activity::ExecImpl());
-  Host::on_state_change.connect([pimpl](s4u::Host const& h) {
+  unsigned int cb_id = Host::on_state_change.connect([pimpl](s4u::Host const& h) {
     if (not h.is_on() && pimpl->state_ == kernel::activity::State::RUNNING &&
         std::find(pimpl->get_hosts().begin(), pimpl->get_hosts().end(), &h) != pimpl->get_hosts().end()) {
       pimpl->state_ = kernel::activity::State::FAILED;
       pimpl->post();
     }
   });
+  pimpl->set_cb_id(cb_id);
   return ExecPtr(pimpl->get_iface());
 }