Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'stable'
[simgrid.git] / src / kernel / activity / CommImpl.cpp
index 44a6e8083f9b79bfdb4fdf1b7cebc906e7d9a38e..4af25698788bbadefb9c3f58d5d0b6a8b0d1a749 100644 (file)
@@ -419,16 +419,6 @@ void CommImpl::wait_for(actor::ActorImpl* issuer, double timeout)
 
 void CommImpl::wait_any_for(actor::ActorImpl* issuer, const std::vector<CommImpl*>& comms, double timeout)
 {
-  if (MC_is_active() || MC_record_replay_is_active()) {
-    xbt_assert(timeout <= 0.0, "Timeout not implemented for waitany in the model-checker");
-    int idx    = issuer->simcall_.mc_value_;
-    auto* comm = comms[idx];
-    comm->simcalls_.push_back(&issuer->simcall_);
-    simcall_comm_waitany__set__result(&issuer->simcall_, idx);
-    comm->set_state(State::DONE);
-    comm->finish();
-    return;
-  }
   std::vector<ActivityImpl*> activities(comms.begin(), comms.end());
   ActivityImpl::wait_any_for(issuer, activities, timeout);
 }
@@ -599,8 +589,11 @@ void CommImpl::finish()
     if (not simcall->issuer_->get_host()->is_on()) {
       simcall->issuer_->context_->set_wannadie();
     } else {
-      set_exception(simcall->issuer_);
-      simcall->issuer_->simcall_answer();
+      // Do not answer to dying actors
+      if (not simcall->issuer_->context_->wannadie()) {
+        set_exception(simcall->issuer_);
+        simcall->issuer_->simcall_answer();
+      }
     }
 
     simcall->issuer_->waiting_synchro_ = nullptr;