Skip to content

Should types like AtomicWaker and AbortHandle be declared UnwindSafe? #2211

@najamelan

Description

@najamelan

I run into issues with a type I would like to be UnwindSafe. It contains an AbortHandle which contains a AtomicWaker and these types aren't unwindsafe because AtomicWaker contains an UnsafeCell.

In the current state of affairs it is up to a user in such situation to go figure out from the futures source code whether these are UnwindSafe but it was forgotten to mark them as such, or whether they are not UnwindSafe but that was not mentioned in the docs.

From a quick look over the code for Abortable I can't immediately see how it could be in an invalid state because of a panic in an inopportune moment, but guaranteeing that with certainty for code one hasn't written is quite some work.

So should these types be marked UnwindSafe and has anyone enough understanding of their internals to quickly verify that? I presume there are other types in futures that are concerned as well (eg. channel Senders/Receivers).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions