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++) {