X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5be17ba45c34a0f49c0394c3713f3836ec110f5e..8265fae7843fa515935916b005f15daa93ff2f26:/src/simix/ActorImpl.cpp diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 4ee0c20f64..8c9e22a3c5 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -101,7 +101,8 @@ void SIMIX_process_cleanup(smx_actor_t process) comm->cancel(); } - XBT_DEBUG("%p should not be run anymore",process); + XBT_DEBUG("%s@%s(%ld) should not run anymore", process->get_cname(), process->iface()->get_host()->get_cname(), + process->pid_); simix_global->process_list.erase(process->pid_); if (process->host_ && process->host_process_list_hook.is_linked()) simgrid::xbt::intrusive_erase(process->host_->pimpl_->process_list_, *process); @@ -498,10 +499,12 @@ void SIMIX_process_kill(smx_actor_t process, smx_actor_t issuer) { process->suspended_ = false; process->exception = nullptr; + if (process->host_->is_off()) + process->throw_exception(std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"))); + /* destroy the blocking synchro if any */ if (process->waiting_synchro != nullptr) { - if (process->host_->is_off()) - process->throw_exception(std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"))); + simgrid::kernel::activity::ExecImplPtr exec = boost::dynamic_pointer_cast(process->waiting_synchro); simgrid::kernel::activity::CommImplPtr comm = @@ -536,7 +539,9 @@ void SIMIX_process_kill(smx_actor_t process, smx_actor_t issuer) { } else if (io != nullptr) { delete io.get(); } else { - xbt_die("Unknown type of activity"); + simgrid::kernel::activity::ActivityImplPtr activity = process->waiting_synchro; + xbt_die("Activity %s is of unknown type %s", activity->name_.c_str(), + simgrid::xbt::demangle(typeid(activity).name()).get()); } process->waiting_synchro = nullptr; @@ -754,6 +759,7 @@ void SIMIX_process_yield(smx_actor_t self) XBT_DEBUG("Process %s@%s is dead", self->get_cname(), self->host_->get_cname()); self->context_->stop(); + xbt_die("I should be dead by now."); } if (self->suspended_) {