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

Fix test_waker_threaded #20

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

danielparks
Copy link
Contributor

This fixes a few race conditions in test_waker_threaded() and adds a timeout to ensure that it doesn’t hang forever if something goes wrong.

Some notes:

  • It is always possible to have messages on the channel after the thread has finished, since the thread could write a message and finish between the call to poll() and the start of the next loop.
  • reset() could swallow the last wake.
  • It is possible to get either timeouts or events from poll() after the thread finishes. I’m not sure how it gets more events, but when I only checked for is_finished() when getting a timeout, it sometimes hung forever.

Fixes: #19 — test_waker_threaded fails or hangs in Rust 1.70

This fixes a few race conditions in `test_waker_threaded()` and adds a
timeout to ensure that it doesn’t hang forever if something goes wrong.

Some notes:

  * It is always possible to have messages on the channel after the
    thread has finished, since the thread could write a message and
    finish between the call to `poll()` and the start of the next loop.
  * `reset()` could swallow the last wake.
  * It is possible to get either timeouts or events from `poll()` after
    the thread finishes. I’m not sure how it gets more events, but when
    I only checked for `is_finished()` when getting a timeout, it
    sometimes hung forever.

Fixes: cloudhead#19 — test_waker_threaded fails or hangs in Rust 1.70
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

test_waker_threaded fails or hangs in Rust 1.70
1 participant