|  | @@ -676,14 +676,19 @@ static grpc_error *pollset_poll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
 | 
	
		
			
				|  |  |    GRPC_SCHEDULING_END_BLOCKING_REGION;
 | 
	
		
			
				|  |  |    if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  gpr_log(GPR_DEBUG, "PS:%p poll got %d events", pollset, r);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    grpc_error *error = GRPC_ERROR_NONE;
 | 
	
		
			
				|  |  |    for (int i = 0; i < r; i++) {
 | 
	
		
			
				|  |  |      void *data_ptr = events[i].data.ptr;
 | 
	
		
			
				|  |  |      if (data_ptr == &global_wakeup_fd) {
 | 
	
		
			
				|  |  | +      gpr_log(GPR_DEBUG, "PS:%p poll got global_wakeup_fd", pollset);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        grpc_timer_consume_kick();
 | 
	
		
			
				|  |  |        append_error(&error, grpc_wakeup_fd_consume_wakeup(&global_wakeup_fd),
 | 
	
		
			
				|  |  |                     err_desc);
 | 
	
		
			
				|  |  |      } else if (data_ptr == &pollset->pollset_wakeup) {
 | 
	
		
			
				|  |  | +      gpr_log(GPR_DEBUG, "PS:%p poll got pollset_wakeup", pollset);
 | 
	
		
			
				|  |  |        /* once we start shutting down we stop consuming the wakeup:
 | 
	
		
			
				|  |  |           the fd is level triggered and non-exclusive, which should result in all
 | 
	
		
			
				|  |  |           pollers waking */
 | 
	
	
		
			
				|  | @@ -697,6 +702,9 @@ static grpc_error *pollset_poll(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
 | 
	
		
			
				|  |  |        bool cancel = (events[i].events & (EPOLLERR | EPOLLHUP)) != 0;
 | 
	
		
			
				|  |  |        bool read_ev = (events[i].events & (EPOLLIN | EPOLLPRI)) != 0;
 | 
	
		
			
				|  |  |        bool write_ev = (events[i].events & EPOLLOUT) != 0;
 | 
	
		
			
				|  |  | +      gpr_log(GPR_DEBUG,
 | 
	
		
			
				|  |  | +              "PS:%p poll got fd: is_wq=%d cancel=%d read=%d write=%d", pollset,
 | 
	
		
			
				|  |  | +              is_workqueue, cancel, read_ev, write_ev);
 | 
	
		
			
				|  |  |        if (is_workqueue) {
 | 
	
		
			
				|  |  |          append_error(&error,
 | 
	
		
			
				|  |  |                       grpc_wakeup_fd_consume_wakeup(&fd->workqueue_wakeup_fd),
 | 
	
	
		
			
				|  | @@ -812,7 +820,7 @@ static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    struct epoll_event ev_wq = {.events = EPOLLET | EPOLLIN | EPOLLEXCLUSIVE,
 | 
	
		
			
				|  |  | -                              .data.ptr = fd};
 | 
	
		
			
				|  |  | +                              .data.ptr = (void*)(1+(intptr_t)fd)};
 | 
	
		
			
				|  |  |    if (epoll_ctl(pollset->epfd, EPOLL_CTL_ADD, fd->workqueue_wakeup_fd.read_fd,
 | 
	
		
			
				|  |  |                  &ev_wq) != 0) {
 | 
	
		
			
				|  |  |      switch (errno) {
 |