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

task: illumos/Solaris have thread-local weirdness #6777

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

Commits on Aug 15, 2024

  1. task: illumos/Solaris have thread-local weirdness

    ## Motivation
    
    In `tokio::task::local`, there's a
    `LocalState::assert_called_from_owner_thread` function, which checks
    that the caller's thread ID matches that of the thread on which the
    `LocalSet` was created. This assertion is disabled on FreeBSD and
    OpenBSD, with a comment indicating that this is because those systems
    have "some weirdness around thread-local destruction". If memory serves,
    I believe the "weirdness" was related to the order in which
    thread-locals are destroyed relative to each other, or something along
    those lines.
    
    Upon running the tests on illumos, there appears to be [a similar
    panic][1] in the `task_local_set_in_thread_local` due to this assertion
    assertion while dropping a `LocalSet` which lives in a thread-local.
    This leads me to believe that illumos, and presumably Solaris, also
    exhibit the same "weirdness". This wouldn't be too surprising, given the
    shared heritage of those systems.
    
    ## Solution
    
    This commit adds `target_os="illumos"` and `target_os="solaris"` to the
    `cfg` attribute that disables the assertion on systems determined to
    have weirdness. This fixes the test panicking on illumos.
    
    In the future, it might be worthwhile to look into changign the
    assertion to only be disabled on weirdness-having systems _while
    dropping the `LocalSet`_, rather than all the time. That way, we can
    still check other accesses. But, I wanted to make the minimum change
    necessary to fix it here before messing around with that.
    
    [1]: https://buildomat.eng.oxide.computer/wg/0/details/01J592RB0JR203RGGN0RYHJHMY/CHieo1Uee7qzRVyp811YBl0MvXGO3i0QA9ezPaFWj6hf6P3P/01J592RSWCNX1MCFYGW74AHVH6#S1954
    hawkw committed Aug 15, 2024
    Configuration menu
    Copy the full SHA
    c0d199f View commit details
    Browse the repository at this point in the history