From: Martin Quinson Date: Mon, 8 Mar 2021 21:38:29 +0000 (+0100) Subject: Merge branch 'master' of framagit.org:simgrid/simgrid X-Git-Tag: v3.27~210 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/fc646b32904fce0465f564d149a830c8e7aeffe4 Merge branch 'master' of framagit.org:simgrid/simgrid --- fc646b32904fce0465f564d149a830c8e7aeffe4 diff --cc src/mc/checker/SafetyChecker.cpp index 0feca33fc7,c54759cd74..4198071243 --- a/src/mc/checker/SafetyChecker.cpp +++ b/src/mc/checker/SafetyChecker.cpp @@@ -185,18 -186,17 +185,18 @@@ void SafetyChecker::backtrack( std::unique_ptr state = std::move(stack_.back()); stack_.pop_back(); if (reductionMode_ == ReductionMode::dpor) { - smx_simcall_t req = &state->internal_req_; - // FIXME: need something less ugly than this substring search - if (req->call_ == simix::Simcall::MUTEX_LOCK || - (req->observer_ && - api::get().request_to_string(req, 0, RequestType::internal).find("Mutex") != std::string::npos)) + auto call = state->executed_req_.call_; + const kernel::actor::ActorImpl* issuer = api::get().simcall_get_issuer(&state->executed_req_); - if (call == simix::Simcall::MUTEX_LOCK || call == simix::Simcall::MUTEX_TRYLOCK) ++ if (call == simix::Simcall::MUTEX_LOCK) xbt_die("Mutex is currently not supported with DPOR, use --cfg=model-check/reduction:none"); - const kernel::actor::ActorImpl* issuer = api::get().simcall_get_issuer(req); for (auto i = stack_.rbegin(); i != stack_.rend(); ++i) { State* prev_state = i->get(); - if (api::get().simcall_check_dependency(req, &prev_state->internal_req_)) { + if (state->executed_req_.issuer_ == prev_state->executed_req_.issuer_) { + XBT_DEBUG("Simcall %s and %s with same issuer", SIMIX_simcall_name(call), + SIMIX_simcall_name(prev_state->executed_req_.call_)); + break; + } else if (api::get().simcall_check_dependency(&state->internal_req_, &prev_state->internal_req_)) { if (XBT_LOG_ISENABLED(mc_safety, xbt_log_priority_debug)) { XBT_DEBUG("Dependent Transitions:"); int value = prev_state->transition_.times_considered_;