aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2017-04-19 23:22:48 +0000
committerGravatar Craig Tiller <ctiller@google.com>2017-04-19 23:22:48 +0000
commit1d15194027649936ab579aeeba81240252e13d2f (patch)
treec5cacce636397799d9daf9016453006b476eaf4d
parent653ca0b517d8695cc720eda99b98438dbc349d46 (diff)
Fix race
-rw-r--r--src/core/lib/iomgr/ev_epollex_linux.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/core/lib/iomgr/ev_epollex_linux.c b/src/core/lib/iomgr/ev_epollex_linux.c
index d6504f5bac..0839a40429 100644
--- a/src/core/lib/iomgr/ev_epollex_linux.c
+++ b/src/core/lib/iomgr/ev_epollex_linux.c
@@ -665,6 +665,7 @@ static grpc_error *pollset_kick_all(grpc_pollset *pollset) {
if (pollset->root_worker != NULL) {
grpc_pollset_worker *worker = pollset->root_worker;
do {
+ gpr_mu_lock(&worker->pollable->po.mu);
if (worker->initialized_cv) {
worker->kicked = true;
gpr_cv_signal(&worker->cv);
@@ -672,6 +673,7 @@ static grpc_error *pollset_kick_all(grpc_pollset *pollset) {
append_error(&error, grpc_wakeup_fd_wakeup(&worker->pollable->wakeup),
"pollset_shutdown");
}
+ gpr_mu_unlock(&worker->pollable->po.mu);
worker = worker->links[PWL_POLLSET].next;
} while (worker != pollset->root_worker);