Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix asserts for when received size is 0 (message type is invalid).
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 8 Mar 2023 22:15:18 +0000 (23:15 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 8 Mar 2023 22:33:06 +0000 (23:33 +0100)
src/mc/ModelChecker.cpp
src/mc/api/RemoteApp.cpp

index e4024ea..47fcf02 100644 (file)
@@ -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
index 7010782..4addcf5 100644 (file)
@@ -173,11 +173,10 @@ void RemoteApp::get_actors_status(std::map<aid_t, ActorState>& 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:");