-
- for (simgrid::mc::Transition const& transition : trace) {
- XBT_DEBUG("Executing %ld$%i", transition.aid_, transition.times_considered_);
-
- // Choose a request:
- kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_pid(transition.aid_);
- xbt_assert(actor != nullptr, "Unexpected actor (id:%ld).", transition.aid_);
- const s_smx_simcall* simcall = &(actor->simcall_);
- xbt_assert(simcall->call_ != simix::Simcall::NONE, "No simcall for process %ld.", transition.aid_);
- xbt_assert(simgrid::mc::request_is_visible(simcall) && simgrid::mc::actor_is_enabled(actor), "Unexpected simcall.");
+ auto* engine = kernel::EngineImpl::get_instance();
+
+ int frame_count = 1;
+ if (xbt_log_no_loc)
+ XBT_INFO("The backtrace of each transition will not be shown because of --log=no_loc");
+ else
+ simgrid_mc_replay_show_backtraces = true;
+
+ for (const simgrid::mc::Transition* transition : transitions_) {
+ kernel::actor::ActorImpl* actor = engine->get_actor_by_pid(transition->aid_);
+ xbt_assert(actor != nullptr, "Unexpected actor (id:%ld).", transition->aid_);
+ const kernel::actor::Simcall* simcall = &(actor->simcall_);
+ xbt_assert(simgrid::mc::request_is_visible(simcall), "Simcall %s of actor %s is not visible.", simcall->get_cname(),
+ actor->get_cname());
+
+ XBT_INFO("***********************************************************************************");
+ XBT_INFO("* Path chunk #%d '%ld/%i' Actor %s(pid:%ld): %s", frame_count++, transition->aid_,
+ transition->times_considered_, simcall->issuer_->get_cname(), simcall->issuer_->get_pid(),
+ simcall->observer_->to_string().c_str());
+ XBT_INFO("***********************************************************************************");
+ if (not mc::actor_is_enabled(actor))
+ simgrid::kernel::EngineImpl::get_instance()->display_all_actor_status();
+
+ xbt_assert(simgrid::mc::actor_is_enabled(actor), "Actor %s (simcall %s) is not enabled.", actor->get_cname(),
+ simcall->get_cname());