aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/iomgr/ev_epoll_linux.c
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2016-07-06 17:13:56 -0700
committerGravatar Craig Tiller <ctiller@google.com>2016-07-06 17:13:56 -0700
commit42ac6dbe2052913727b29f92d5415c4a5c4b845f (patch)
tree0008d012e9042458b22ceb6ebbda7cf429d74778 /src/core/lib/iomgr/ev_epoll_linux.c
parent4ebfe9056063dc27c8e2cfced886b9d0b05bd8e2 (diff)
Handle orphaned fds
Diffstat (limited to 'src/core/lib/iomgr/ev_epoll_linux.c')
-rw-r--r--src/core/lib/iomgr/ev_epoll_linux.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/lib/iomgr/ev_epoll_linux.c b/src/core/lib/iomgr/ev_epoll_linux.c
index 0fb4399fa7..0e6cba7e4f 100644
--- a/src/core/lib/iomgr/ev_epoll_linux.c
+++ b/src/core/lib/iomgr/ev_epoll_linux.c
@@ -1548,6 +1548,14 @@ retry:
* polling_island fields in both fd and pollset to point to the merged
* polling island.
*/
+
+ if (fd->orphaned) {
+ gpr_mu_unlock(&fd->mu);
+ gpr_mu_unlock(&pollset->mu);
+ /* early out */
+ return;
+ }
+
if (fd->polling_island == pollset->polling_island) {
pi_new = fd->polling_island;
if (pi_new == NULL) {