Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

erl_check_io: do not discard ERTS_POLL_EV_IN from active_events #2701

Merged
merged 1 commit into from
Aug 7, 2020

Commits on Jul 29, 2020

  1. erl_check_io: do not discard ERTS_POLL_EV_IN from active_events

    This commit fixes a race condition, which can be reproduced
    with running a large amount of bidirectional TCP streams.
    When the system is fully loaded, it is possible that socket migrated
    to scheduler pollset still fires EPOLLIN event. In this case
    active_events field of ErtsDrvEventState structure will desynchronise
    from the actual state (with EPOLLIN requested via scheduler pollset).
    This, in turn, leads to all ERTS_POLL_EV_IN events disregarded. All
    reads from the socket will be stopped.
    This can only happen for {active, N} mode of a TCP socket, where
    fd migrates back and forth to/from scheduler pollset.
    max-au committed Jul 29, 2020
    Configuration menu
    Copy the full SHA
    80843bc View commit details
    Browse the repository at this point in the history