X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/59054b2bcebd6cdc83ca72089f320f244e3b9b4f..061e670ff8857e59d3901377c45ca6565c778018:/src/mc/explo/DFSExplorer.cpp diff --git a/src/mc/explo/DFSExplorer.cpp b/src/mc/explo/DFSExplorer.cpp index 978cdfd1ef..a7c9dcf021 100644 --- a/src/mc/explo/DFSExplorer.cpp +++ b/src/mc/explo/DFSExplorer.cpp @@ -8,8 +8,10 @@ #include "src/mc/mc_exit.hpp" #include "src/mc/mc_private.hpp" #include "src/mc/mc_record.hpp" +#include "src/mc/remote/mc_protocol.h" #include "src/mc/transition/Transition.hpp" +#include "xbt/asserts.h" #include "xbt/log.h" #include "xbt/string.hpp" #include "xbt/sysdep.h" @@ -136,7 +138,19 @@ void DFSExplorer::run() const aid_t next = reduction_mode_ == ReductionMode::odpor ? state->next_odpor_transition() : std::get<0>(state->next_transition_guided()); - if (next < 0) { // If there is no more transition in the current state, backtrack. + if (next < 0 || not state->is_actor_enabled(next)) { + if (next >= 0) { // Actor is not enabled, then + XBT_INFO("Reduction %s wants to execute a disabled transition %s. If it's ODPOR, ReversibleRace is suboptimal.", + to_c_str(reduction_mode_), + state->get_actors_list().at(next).get_transition()->to_string(true).c_str()); + if (reduction_mode_ == ReductionMode::odpor) { + XBT_INFO("Current trace:"); + for (auto elm : get_textual_trace()) + XBT_ERROR("%s", elm.c_str()); + } + } + // If there is no more transition in the current state (or if ODPOR picked an actor that is not enabled -- + // ReversibleRace is an overapproximation), backtrace XBT_VERB("%lu actors remain, but none of them need to be interleaved (depth %zu).", state->get_actor_count(), stack_.size() + 1);