X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/11ce6b59ec29ed55d422a0c97a7d734ac1eb7a39..a8435b590ee086dcf3eff0592b2001bb6d0dd059:/src/mc/SafetyChecker.cpp diff --git a/src/mc/SafetyChecker.cpp b/src/mc/SafetyChecker.cpp index 0f20188764..f79c6b98bf 100644 --- a/src/mc/SafetyChecker.cpp +++ b/src/mc/SafetyChecker.cpp @@ -7,7 +7,9 @@ #include #include -#include +#include +#include +#include #include #include @@ -81,12 +83,9 @@ std::vector SafetyChecker::getTextualTrace() // override for (auto const& state : stack_) { int value; smx_simcall_t req = MC_state_get_executed_request(state.get(), &value); - if (req) { - char* req_str = simgrid::mc::request_to_string( - req, value, simgrid::mc::RequestType::executed); - trace.push_back(req_str); - xbt_free(req_str); - } + if (req) + trace.push_back(simgrid::mc::request_to_string( + req, value, simgrid::mc::RequestType::executed)); } return trace; } @@ -125,14 +124,11 @@ int SafetyChecker::run() // If there are processes to interleave and the maximum depth has not been // reached then perform one step of the exploration algorithm. + XBT_DEBUG("Execute: %s", + simgrid::mc::request_to_string( + req, value, simgrid::mc::RequestType::simix).c_str()); - if (XBT_LOG_ISENABLED(mc_safety, xbt_log_priority_debug)) { - char* req_str = simgrid::mc::request_to_string(req, value, simgrid::mc::RequestType::simix); - XBT_DEBUG("Execute: %s", req_str); - xbt_free(req_str); - } - - char* req_str = nullptr; + std::string req_str; if (dot_output != nullptr) req_str = simgrid::mc::request_get_dot_output(req, value); @@ -167,15 +163,15 @@ int SafetyChecker::run() } if (dot_output != nullptr) - std::fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", state->num, next_state->num, req_str); + std::fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", + state->num, next_state->num, req_str.c_str()); } else if (dot_output != nullptr) - std::fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", state->num, visitedState_->other_num == -1 ? visitedState_->num : visitedState_->other_num, req_str); + std::fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", + state->num, + visitedState_->other_num == -1 ? visitedState_->num : visitedState_->other_num, req_str.c_str()); stack_.push_back(std::move(next_state)); - - if (dot_output != nullptr) - xbt_free(req_str); } XBT_INFO("No property violation found."); @@ -232,13 +228,15 @@ int SafetyChecker::backtrack() XBT_DEBUG("Dependent Transitions:"); int value; smx_simcall_t prev_req = MC_state_get_executed_request(prev_state, &value); - char* req_str = simgrid::mc::request_to_string(prev_req, value, simgrid::mc::RequestType::internal); - XBT_DEBUG("%s (state=%d)", req_str, prev_state->num); - xbt_free(req_str); + XBT_DEBUG("%s (state=%d)", + simgrid::mc::request_to_string( + prev_req, value, simgrid::mc::RequestType::internal).c_str(), + prev_state->num); prev_req = MC_state_get_executed_request(state.get(), &value); - req_str = simgrid::mc::request_to_string(prev_req, value, simgrid::mc::RequestType::executed); - XBT_DEBUG("%s (state=%d)", req_str, state->num); - xbt_free(req_str); + XBT_DEBUG("%s (state=%d)", + simgrid::mc::request_to_string( + prev_req, value, simgrid::mc::RequestType::executed).c_str(), + state->num); } if (!prev_state->processStates[issuer->pid].done())