Closed bturner closed 2 years ago
Seems like the CI bits aren't really running anymore. I don't see the ARM and x64 checks that other pull requests have had.
We were able to get a reproduction of EINTR
by attaching strace
to the JVM while it's in epoll_wait
. Without this patch, an exception is thrown and the process is leaked. With it, processing continues normally.
I see 2.0.2 was released without this. Any chance of a merge and a 2.0.3?
We've found another path that can result in zombies. I'll either update this pull request or open a second one.
epoll_wait
is not restarted after it's interrupted by a signal handler, even if the handler usedSA_RESTART
. Instead, the calling code needs to handle theEINTR
and restart the call itself.BaseEventProcessor
andProcessCompletions
when theprocess()
loop is aborted due to an exceptionEINTR
toLibC
ProcessEpoll
to detectEINTR
afterepoll_wait
fails and returntrue
to retry the callFixes #124