Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of https://framagit.org/simgrid/simgrid
authormlaurent <mathieu.laurent@ens-rennes.fr>
Fri, 24 Mar 2023 09:16:12 +0000 (10:16 +0100)
committermlaurent <mathieu.laurent@ens-rennes.fr>
Fri, 24 Mar 2023 09:16:12 +0000 (10:16 +0100)
src/mc/remote/AppSide.cpp
src/mc/remote/CheckerSide.cpp

index 7e6e414..447f7db 100644 (file)
@@ -246,6 +246,10 @@ void AppSide::handle_messages()
     std::array<char, MC_MESSAGE_LENGTH> message_buffer;
     ssize_t received_size = channel_.receive(message_buffer.data(), message_buffer.size());
 
+    if (received_size == 0) {
+      XBT_DEBUG("Socket closed on the Checker side, bailing out.");
+      ::_Exit(0); // Nobody's listening to that process anymore => exit as quickly as possible.
+    }
     xbt_assert(received_size >= 0, "Could not receive commands from the model-checker");
     xbt_assert(static_cast<size_t>(received_size) >= sizeof(s_mc_message_t), "Cannot handle short message (size=%zd)",
                received_size);
index 5958cd3..9cc1f7d 100644 (file)
@@ -220,11 +220,13 @@ CheckerSide::~CheckerSide()
 
   if (running()) {
     XBT_DEBUG("Killing process");
-    finalize(true);
     kill(get_pid(), SIGKILL);
-    terminate();
-    handle_waitpid();
+    while (waitpid(-1, nullptr, WNOHANG) > 0) {
+      /* we don't really care about errors here, as we are shutting things down anyway */
+      /* The child will get ripped by the next waitpid anyway */
+    }
   }
+  // usleep(500); // Try to reduce the load on my system. Commented because it's not even enough :(
 }
 
 void CheckerSide::finalize(bool terminate_asap)