stream << ' ' << (uintptr_t)comm->src_buff_ << ' ' << (uintptr_t)comm->dst_buff_ << ' ' << comm->src_buff_size_;
} else {
stream << (short)mc::Transition::Type::UNKNOWN;
+ XBT_CRITICAL("Unknown transition in a test any. Bad things may happen");
}
}
static std::string to_string_activity_test(const activity::ActivityImpl* act)
"deciding when to make subtrees in ODPOR is incorrect");
xbt_assert((get_transition_in()->aid_ == min_process_node.value()->get_actor()) &&
(get_transition_in()->type_ == min_process_node.value()->get_action()->type_),
- "We tried to make a subtree from a parent state who claimed to have executed `%s` "
- "but whose wakeup tree indicates it should have executed `%s`. This indicates "
+ "We tried to make a subtree from a parent state who claimed to have executed `%s` on actor %ld"
+ "but whose wakeup tree indicates it should have executed `%s` on actor %ld. This indicates "
"that exploration is not following ODPOR. Are you sure you're choosing actors "
"to schedule from the wakeup tree?",
- get_transition_in()->to_string(false).c_str(),
- min_process_node.value()->get_action()->to_string(false).c_str());
+ get_transition_in()->to_string(false).c_str(), get_transition_in()->aid_,
+ min_process_node.value()->get_action()->to_string(false).c_str(), min_process_node.value()->get_actor());
this->wakeup_tree_ = odpor::WakeupTree::make_subtree_rooted_at(min_process_node.value());
}
strncpy(probe.buffer.data(), str.c_str(), probe.buffer.size() - 1);
probe.buffer.back() = '\0';
+ XBT_DEBUG("send ACTOR_TRANSITION_PROBE(%s) ~> '%s'", actor->get_cname(), str.c_str());
xbt_assert(channel_.send(probe) == 0, "Could not send ACTOR_TRANSITION_PROBE payload: %s", strerror(errno));
}
// NOTE: We do NOT need to reset `times_considered` for each actor's