From 8657da93d6e3925137e0ba55d0ee3fcbf6042cb2 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Wed, 8 Mar 2023 23:15:18 +0100 Subject: [PATCH] Fix asserts for when received size is 0 (message type is invalid). --- src/mc/ModelChecker.cpp | 16 ++++++++-------- src/mc/api/RemoteApp.cpp | 18 ++++++++---------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/mc/ModelChecker.cpp b/src/mc/ModelChecker.cpp index e4024eabaf..47fcf02794 100644 --- a/src/mc/ModelChecker.cpp +++ b/src/mc/ModelChecker.cpp @@ -323,11 +323,10 @@ Transition* ModelChecker::handle_simcall(aid_t aid, int times_considered, bool n s_mc_message_simcall_execute_answer_t answer; ssize_t s = checker_side_.get_channel().receive(answer); xbt_assert(s != -1, "Could not receive message"); - xbt_assert(s == sizeof(answer) && answer.type == MessageType::SIMCALL_EXECUTE_ANSWER, - "Received unexpected message %s (%i, size=%i) " - "expected MessageType::SIMCALL_EXECUTE_ANSWER (%i, size=%i)", - to_c_str(answer.type), (int)answer.type, (int)s, (int)MessageType::SIMCALL_EXECUTE_ANSWER, - (int)sizeof(answer)); + xbt_assert(s == sizeof answer, "Broken message (size=%zd; expected %zu)", s, sizeof answer); + xbt_assert(answer.type == MessageType::SIMCALL_EXECUTE_ANSWER, + "Received unexpected message %s (%i); expected MessageType::SIMCALL_EXECUTE_ANSWER (%i)", + to_c_str(answer.type), (int)answer.type, (int)MessageType::SIMCALL_EXECUTE_ANSWER); if (new_transition) { std::stringstream stream(answer.buffer.data()); @@ -346,9 +345,10 @@ void ModelChecker::finalize_app(bool terminate_asap) s_mc_message_t answer; ssize_t s = checker_side_.get_channel().receive(answer); xbt_assert(s != -1, "Could not receive answer to FINALIZE"); - xbt_assert(s == sizeof(answer) && answer.type == MessageType::FINALIZE_REPLY, - "Received unexpected message %s (%i, size=%i) expected MessageType::FINALIZE_REPLY (%i, size=%i)", - to_c_str(answer.type), (int)answer.type, (int)s, (int)MessageType::FINALIZE_REPLY, (int)sizeof(answer)); + xbt_assert(s == sizeof answer, "Broken message (size=%zd; expected %zu)", s, sizeof answer); + xbt_assert(answer.type == MessageType::FINALIZE_REPLY, + "Received unexpected message %s (%i); expected MessageType::FINALIZE_REPLY (%i)", to_c_str(answer.type), + (int)answer.type, (int)MessageType::FINALIZE_REPLY); } } // namespace simgrid::mc diff --git a/src/mc/api/RemoteApp.cpp b/src/mc/api/RemoteApp.cpp index 70107821e7..4addcf58c8 100644 --- a/src/mc/api/RemoteApp.cpp +++ b/src/mc/api/RemoteApp.cpp @@ -173,11 +173,10 @@ void RemoteApp::get_actors_status(std::map& whereto) const s_mc_message_actors_status_answer_t answer; ssize_t answer_size = model_checker_->channel().receive(answer); xbt_assert(answer_size != -1, "Could not receive message"); - xbt_assert(answer_size == sizeof answer && answer.type == MessageType::ACTORS_STATUS_REPLY, - "Received unexpected message %s (%i, size=%zd) " - "expected MessageType::ACTORS_STATUS_REPLY (%i, size=%zu)", - to_c_str(answer.type), (int)answer.type, answer_size, (int)MessageType::ACTORS_STATUS_REPLY, - sizeof answer); + xbt_assert(answer_size == sizeof answer, "Broken message (size=%zd; expected %zu)", answer_size, sizeof answer); + xbt_assert(answer.type == MessageType::ACTORS_STATUS_REPLY, + "Received unexpected message %s (%i); expected MessageType::ACTORS_STATUS_REPLY (%i)", + to_c_str(answer.type), (int)answer.type, (int)MessageType::ACTORS_STATUS_REPLY); // Message sanity checks xbt_assert(answer.count >= 0, "Received an ACTOR_STATUS_REPLY message with an actor count of '%d' < 0", answer.count); @@ -241,11 +240,10 @@ void RemoteApp::check_deadlock() const s_mc_message_int_t message; ssize_t received = model_checker_->channel().receive(message); xbt_assert(received != -1, "Could not receive message"); - xbt_assert(received == sizeof message && message.type == MessageType::DEADLOCK_CHECK_REPLY, - "Received unexpected message %s (%i, size=%zd) " - "expected MessageType::DEADLOCK_CHECK_REPLY (%i, size=%zu)", - to_c_str(message.type), (int)message.type, received, (int)MessageType::DEADLOCK_CHECK_REPLY, - sizeof message); + xbt_assert(received == sizeof message, "Broken message (size=%zd; expected %zu)", received, sizeof message); + xbt_assert(message.type == MessageType::DEADLOCK_CHECK_REPLY, + "Received unexpected message %s (%i); expected MessageType::DEADLOCK_CHECK_REPLY (%i)", + to_c_str(message.type), (int)message.type, (int)MessageType::DEADLOCK_CHECK_REPLY); if (message.value != 0) { XBT_CINFO(mc_global, "Counter-example execution trace:"); -- 2.20.1