- if (not simix_global->process_list.empty()) {
- if (simix_global->process_list.size() <= simix_global->daemons.size()) {
- XBT_CRITICAL("Oops! Daemon actors cannot do any blocking activity (communications, synchronization, etc) "
- "once the simulation is over. Please fix your on_exit() functions.");
- } else {
- XBT_CRITICAL("Oops! Deadlock or code not perfectly clean.");
+ if (time < 0. && simix_global->actors_to_run.empty() && not simix_global->process_list.empty()) {
+ if (simix_global->process_list.size() <= simix_global->daemons.size()) {
+ XBT_CRITICAL("Oops! Daemon actors cannot do any blocking activity (communications, synchronization, etc) "
+ "once the simulation is over. Please fix your on_exit() functions.");
+ } else {
+ XBT_CRITICAL("Oops! Deadlock or code not perfectly clean.");
+ }
+ simix_global->display_all_actor_status();
+ simgrid::s4u::Engine::on_deadlock();
+ for (auto const& kv : simix_global->process_list) {
+ XBT_DEBUG("Kill %s", kv.second->get_cname());
+ simix_global->maestro_->kill(kv.second);
+ }