/* destroy the blocking synchro if any */
if (process->waiting_synchro != nullptr) {
- if (process->host_->is_off()) {
- SMX_EXCEPTION(process, host_error, 0, "Host failed");
- }
+ if (process->host_->is_off())
+ process->exception = std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"));
simgrid::kernel::activity::ExecImplPtr exec =
boost::dynamic_pointer_cast<simgrid::kernel::activity::ExecImpl>(process->waiting_synchro);
simgrid::kernel::activity::CommImplPtr comm =
case SIMIX_FAILED:
XBT_DEBUG("SIMIX_execution_finished: host '%s' failed", simcall->issuer->host_->get_cname());
simcall->issuer->context_->iwannadie = 1;
- SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
+ simcall->issuer->exception =
+ std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"));
break;
case SIMIX_CANCELED:
if (simcall->issuer->host_->is_off()) {
simcall->issuer->context_->iwannadie = 1;
- SMX_EXCEPTION(simcall->issuer, host_error, 0, "Host failed");
+ simcall->issuer->exception =
+ std::make_exception_ptr(simgrid::HostFailureException(XBT_THROW_POINT, "Host failed"));
} else {
switch (comm->state_) {