Unsound sending of non-Send types across threads in threadalone
Moderate severity
GitHub Reviewed
Published
Jan 23, 2024
to the GitHub Advisory Database
Description
Published to the GitHub Advisory Database
Jan 23, 2024
Reviewed
Jan 23, 2024
Affected versions can run the
Drop
impl of a non-Send type on a differentthread than it was created on.
The flaw occurs when a stderr write performed by the
threadalone
crate fails,for example because stderr is redirected to a location on a filesystem that is
full, or because stderr is a pipe that has been closed by the reader.
Dropping a non-Send type on the wrong thread is unsound. If used with a type
such as a pthread-based
MutexGuard
, the consequence is undefinedbehavior. If used with
Rc
, there would be a data race on thereference count, which is likewise undefined behavior.
References