diff --git a/tapeserver/daemon/ProcessManager.cpp b/tapeserver/daemon/ProcessManager.cpp index bf2bbe848afe3de2c0e85279fe5d83744d44973d..64985df3f84e0fe413cd5cf2718f1bff3694e07c 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++) {