diff --git a/erts/emulator/sys/common/erl_check_io.c b/erts/emulator/sys/common/erl_check_io.c index cfd54454569..71ac3dd9439 100644 --- a/erts/emulator/sys/common/erl_check_io.c +++ b/erts/emulator/sys/common/erl_check_io.c @@ -2037,14 +2037,17 @@ erts_check_io(ErtsPollThread *psi, ErtsMonotonicTime timeout_time, int poll_only #endif { ErtsPollEvents reactive_events; + + if (state->flags & ERTS_EV_FLAG_SCHEDULER) { + /* We are in a poll thread and the fd is managed + by a scheduler, we ignore the any IN events */ + revents &= ~ERTS_POLL_EV_IN; + } + state->active_events &= ~revents; reactive_events = state->active_events; - if (state->flags & ERTS_EV_FLAG_IN_SCHEDULER) { - state->active_events |= ERTS_POLL_EV_IN; - } - /* Reactivate the poll op if there are still active events */ if (reactive_events) { ErtsPollEvents new_events;