X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d6eb772e45cc853fc204bb5aebeb411cdfa7c929..30382b06d3320a281f1556546e3b0a8112bd055a:/src/mc/remote/CheckerSide.cpp diff --git a/src/mc/remote/CheckerSide.cpp b/src/mc/remote/CheckerSide.cpp index b6802841ff..9cc1f7d833 100644 --- a/src/mc/remote/CheckerSide.cpp +++ b/src/mc/remote/CheckerSide.cpp @@ -133,7 +133,7 @@ void CheckerSide::setup_events() socket_event_ = event_new( base, get_channel().get_socket(), EV_READ | EV_PERSIST, - [](evutil_socket_t sig, short events, void* arg) { + [](evutil_socket_t, short events, void* arg) { auto checker = static_cast(arg); if (events == EV_READ) { std::array buffer; @@ -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) @@ -283,7 +285,7 @@ bool CheckerSide::handle_message(const char* buffer, ssize_t size) s_mc_message_ignore_memory_t message; xbt_assert(size == sizeof(message), "Broken message"); memcpy(&message, buffer, sizeof(message)); - get_remote_memory()->unignore_heap((void*)(std::uintptr_t)message.addr, message.size); + get_remote_memory()->unignore_heap((void*)message.addr, message.size); } else { XBT_INFO("Ignoring an UNIGNORE_HEAP message because we don't need to introspect memory."); } @@ -366,8 +368,7 @@ void CheckerSide::handle_waitpid() xbt_assert(not this->running(), "Inconsistent state"); break; } else { - XBT_ERROR("Could not wait for pid"); - throw simgrid::xbt::errno_error(); + xbt_die("Could not wait for pid: %s", strerror(errno)); } }