Hi Bryan,

I have some good news. I can realiably reproduce it and I have a workaround.
It's not a fix yet until the issue is completely qualified. It happens with
error delivery that tends to propagate via the send() channel without disabling
send activity because there is nothing to send, hence the loop afterwards.

The temporary fix consists in leaving the ERR check only on the recv path and
disabling it on the send path :

src/ev_epoll.c:

-                       if (fdtab[fd].ev & (FD_POLL_OUT|FD_POLL_ERR))
+                       if (fdtab[fd].ev & (FD_POLL_OUT/*|FD_POLL_ERR*/))
                                fd_ev_set(fd, DIR_WR);

At least your CPU issues will go, but I need to completely understand the
root cause of the issue before committing this.

Hoping this helps,
Willy


Reply via email to