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
Add advisory for tokio-rs/tokio#4225 #1106
Conversation
If a `tokio::sync::oneshot` channel is closed (via the [`oneshot::Receiver::close`] method), a data race may occur if the `oneshot::Sender::send` method is called while the corresponding `oneshot::Receiver` is `await`ed or calling `try_recv`. When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to [cause memory corruption][corruption]. Note that the race only occurs when **both** halves of the channel are used after one half has called `close`. Code where `close` is not used, or where the `Receiver` is not `await`ed and `try_recv` is not called after calling `close`, is not affected. See tokio-rs/tokio#4225 for more details. This issue was patched in v1.13.1. The patch was backported to the current LTS version (v1.8.x) in release v1.8.4.
cc @Darksonn |
Co-authored-by: Tony Arcieri <bascule@gmail.com>
whoops
Merged. Thanks a lot for the report! |
No problem! We may also want to consider an advisory for the |
If a
tokio::sync::oneshot
channel is closed (via theoneshot::Receiver::close
]method), a data race may occur if theoneshot::Sender::send
method is called while the correspondingoneshot::Receiver
isawait
ed or callingtry_recv
.When these methods are called concurrently on a closed channel, the two halves
of the channel can concurrently access a shared memory location, resulting in a
data race. This has been observed to [cause memory corruption][corruption].
Note that the race only occurs when both halves of the channel are used
after one half has called
close
. Code whereclose
is not used, or where theReceiver
is notawait
ed andtry_recv
is not called after callingclose
,is not affected.
See tokio-rs/tokio#4225 for more details.
This issue was patched in v1.13.1. The patch was backported to the current
LTS version (v1.8.x) in release v1.8.4.