X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/48296e83ce3ba1fa3658a3a74d10a536e33b3849..788fd4a0324f3ef5aa40f37eb6e4c8c5accd1164:/src/mc/explo/CommunicationDeterminismChecker.cpp diff --git a/src/mc/explo/CommunicationDeterminismChecker.cpp b/src/mc/explo/CommunicationDeterminismChecker.cpp index bb9a5b2f94..a1a51ce080 100644 --- a/src/mc/explo/CommunicationDeterminismChecker.cpp +++ b/src/mc/explo/CommunicationDeterminismChecker.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2008-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2008-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -11,6 +11,7 @@ #include "src/mc/mc_private.hpp" #include "src/mc/transition/TransitionAny.hpp" #include "src/mc/transition/TransitionComm.hpp" +#include "xbt/string.hpp" #include @@ -208,7 +209,7 @@ void CommDetExtension::enforce_deterministic_pattern(aid_t actor, const PatternC XBT_INFO("*********************************************************"); XBT_INFO("%s", send_diff.c_str()); exploration_.log_state(); - mc_model_checker->exit(SIMGRID_MC_EXIT_NON_DETERMINISM); + exploration_.system_exit(SIMGRID_MC_EXIT_NON_DETERMINISM); } else if (_sg_mc_comms_determinism && (not send_deterministic && not recv_deterministic)) { XBT_INFO("****************************************************"); XBT_INFO("***** Non-deterministic communications pattern *****"); @@ -218,7 +219,7 @@ void CommDetExtension::enforce_deterministic_pattern(aid_t actor, const PatternC if (not recv_diff.empty()) XBT_INFO("%s", recv_diff.c_str()); exploration_.log_state(); - mc_model_checker->exit(SIMGRID_MC_EXIT_NON_DETERMINISM); + exploration_.system_exit(SIMGRID_MC_EXIT_NON_DETERMINISM); } } } @@ -233,7 +234,7 @@ void CommDetExtension::get_comm_pattern(const Transition* transition) auto pattern = std::make_unique(); pattern->index = initial_pattern.index_comm + incomplete_pattern.size(); - if (transition->type_ == Transition::Type::COMM_SEND) { + if (transition->type_ == Transition::Type::COMM_ASYNC_SEND) { auto* send = static_cast(transition); pattern->type = PatternCommunicationType::send; @@ -242,7 +243,7 @@ void CommDetExtension::get_comm_pattern(const Transition* transition) // FIXME: Detached sends should be enforced when the receive is waited - } else if (transition->type_ == Transition::Type::COMM_RECV) { + } else if (transition->type_ == Transition::Type::COMM_ASYNC_RECV) { auto* recv = static_cast(transition); pattern->type = PatternCommunicationType::receive; @@ -290,8 +291,8 @@ void CommDetExtension::handle_comm_pattern(const Transition* transition) return; switch (transition->type_) { - case Transition::Type::COMM_SEND: - case Transition::Type::COMM_RECV: + case Transition::Type::COMM_ASYNC_SEND: + case Transition::Type::COMM_ASYNC_RECV: get_comm_pattern(transition); break; case Transition::Type::COMM_WAIT: @@ -326,7 +327,7 @@ Exploration* create_communication_determinism_checker(const std::vector& XBT_DEBUG("********* Start communication determinism verification *********"); - auto base = new DFSExplorer(args, with_dpor); + auto base = new DFSExplorer(args, with_dpor, true); auto extension = new CommDetExtension(*base); DFSExplorer::on_exploration_start([extension](RemoteApp const&) {