From 9ec4c698631ec44c39b691c6eef8e847379e2e66 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 31 Jul 2022 11:56:56 +0200 Subject: [PATCH] sanitize things around FINALIZE_REPLY despite my laziness as it seems to break on FreeBSD --- src/mc/ModelChecker.cpp | 6 +++++- src/mc/remote/AppSide.cpp | 4 +--- src/mc/remote/mc_protocol.h | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/mc/ModelChecker.cpp b/src/mc/ModelChecker.cpp index 4c1415a35a..fe5d743d15 100644 --- a/src/mc/ModelChecker.cpp +++ b/src/mc/ModelChecker.cpp @@ -349,7 +349,11 @@ void ModelChecker::finalize_app(bool terminate_asap) xbt_assert(checker_side_.get_channel().send(m) == 0, "Could not ask the app to finalize on need"); s_mc_message_t answer; - xbt_assert(checker_side_.get_channel().receive(answer) != -1, "Could not receive answer to FINALIZE"); + 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)); } } // namespace simgrid::mc diff --git a/src/mc/remote/AppSide.cpp b/src/mc/remote/AppSide.cpp index eaf261bacc..ec9e43a6e3 100644 --- a/src/mc/remote/AppSide.cpp +++ b/src/mc/remote/AppSide.cpp @@ -136,9 +136,7 @@ void AppSide::handle_finalize(const s_mc_message_int_t* msg) const #endif } coverage_checkpoint(); - xbt_assert(channel_.send(MessageType::DEADLOCK_CHECK_REPLY) == - 0, // DEADLOCK_CHECK_REPLY because I'm too lazy to create another message type with no content (FIXME) - "Could not answer to FINALIZE"); + xbt_assert(channel_.send(MessageType::FINALIZE_REPLY) == 0, "Could not answer to FINALIZE"); std::fflush(stdout); if (terminate_asap) ::_Exit(0); diff --git a/src/mc/remote/mc_protocol.h b/src/mc/remote/mc_protocol.h index 6895fa0e54..bf08566eb0 100644 --- a/src/mc/remote/mc_protocol.h +++ b/src/mc/remote/mc_protocol.h @@ -25,7 +25,8 @@ namespace simgrid::mc { XBT_DECLARE_ENUM_CLASS(MessageType, NONE, INITIAL_ADDRESSES, CONTINUE, IGNORE_HEAP, UNIGNORE_HEAP, IGNORE_MEMORY, STACK_REGION, REGISTER_SYMBOL, DEADLOCK_CHECK, DEADLOCK_CHECK_REPLY, WAITING, SIMCALL_EXECUTE, - SIMCALL_EXECUTE_ANSWER, ASSERTION_FAILED, ACTORS_STATUS, ACTORS_STATUS_REPLY, FINALIZE); + SIMCALL_EXECUTE_ANSWER, ASSERTION_FAILED, ACTORS_STATUS, ACTORS_STATUS_REPLY, FINALIZE, + FINALIZE_REPLY); } // namespace simgrid::mc constexpr unsigned MC_MESSAGE_LENGTH = 512; -- 2.20.1