diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c index a38517908da..826c792990e 100644 --- a/src/core/iomgr/pollset_posix.c +++ b/src/core/iomgr/pollset_posix.c @@ -420,6 +420,8 @@ static int unary_poll_pollset_maybe_work(grpc_pollset *pollset, pfd[1].events = grpc_fd_begin_poll(fd, pollset, POLLIN, POLLOUT, &fd_watcher); + /* poll fd count (argument 2) is shortened by one if we have no events + to poll on - such that it only includes the kicker */ r = poll(pfd, GPR_ARRAY_SIZE(pfd) - (pfd[1].events == 0), timeout); GRPC_TIMER_MARK(GRPC_PTAG_POLL_FINISHED, r);