From e29a44362695a850a28c26062d216ff9cccf34df Mon Sep 17 00:00:00 2001 From: Eric Cano <Eric.Cano@cern.ch> Date: Mon, 30 Apr 2018 16:19:52 +0200 Subject: [PATCH] Added support to EINTR error in main process. This allows attaching a debugger to the main process. --- tapeserver/daemon/ProcessManager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tapeserver/daemon/ProcessManager.cpp b/tapeserver/daemon/ProcessManager.cpp index bf2bbe848a..64985df3f8 100644 --- a/tapeserver/daemon/ProcessManager.cpp +++ b/tapeserver/daemon/ProcessManager.cpp @@ -277,6 +277,8 @@ void ProcessManager::runEventLoop() { const int eventSlotCount = 5; ::epoll_event ee[eventSlotCount]; int receivedEvents = ::epoll_wait(m_epollFd, ee, eventSlotCount, nextTimeoutMs); + // epoll_wait can get interrupted by signal (like while debugging). This is should not be treated as an error. + if (-1 == receivedEvents && EINTR == errno) receivedEvents = 0; cta::exception::Errnum::throwOnMinusOne(receivedEvents, "In ProcessManager::run(): failed to ::epoll_wait()"); for (int i=0; i< receivedEvents; i++) { -- GitLab