From f56dcd1505ea90947cd3cece1ac3ef3dcf418e21 Mon Sep 17 00:00:00 2001 From: def Date: Sun, 4 Jan 2015 23:06:48 +0100 Subject: [PATCH] Handle interrupt on epoll_wait graciously (allows strace to work) --- lib/pure/selectors.nim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pure/selectors.nim b/lib/pure/selectors.nim index b796dca7a9..f17c6d3174 100644 --- a/lib/pure/selectors.nim +++ b/lib/pure/selectors.nim @@ -146,7 +146,11 @@ elif defined(linux): ## on the ``fd``. result = @[] let evNum = epoll_wait(s.epollFD, addr s.events[0], 64.cint, timeout.cint) - if evNum < 0: raiseOSError(osLastError()) + if evNum < 0: + let err = osLastError() + if err.cint == EINTR: + return @[] + raiseOSError(osLastError()) if evNum == 0: return @[] for i in 0 ..