From 2fbcc71ab230e6a05e64189f6bd7c49c1df31907 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Mon, 3 Apr 2023 16:13:42 +0200 Subject: [PATCH 1/1] Treat ECONNRESET like a normal connection close. Also return immediately with EAGAIN, or handle_message() will fail with size == -1. --- src/mc/remote/CheckerSide.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/mc/remote/CheckerSide.cpp b/src/mc/remote/CheckerSide.cpp index 2e64dd8449..ab9feec026 100644 --- a/src/mc/remote/CheckerSide.cpp +++ b/src/mc/remote/CheckerSide.cpp @@ -131,9 +131,15 @@ void CheckerSide::setup_events(bool socket_only) std::array buffer; ssize_t size = recv(checker->get_channel().get_socket(), buffer.data(), buffer.size(), MSG_DONTWAIT); if (size == -1) { - XBT_ERROR("Channel::receive failure: %s", strerror(errno)); - if (errno != EAGAIN) - throw simgrid::xbt::errno_error(); + if (errno == ECONNRESET) { + XBT_DEBUG("Channel::receive failure: %s", strerror(errno)); + size = 0; // Connection was closed + } else { + XBT_ERROR("Channel::receive failure: %s", strerror(errno)); + if (errno != EAGAIN) + throw simgrid::xbt::errno_error(); + return; + } } if (size == 0) // The app closed the socket. It must be dead by now. -- 2.30.2