Invalid usage of &mut self
in std::sync::mpsc
#36934
Labels
E-help-wanted
Call for participation: Help is requested to fix this issue.
I-unsound
Issue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/Soundness
Almost all of the internal code in the
mpsc
module makes use of&mut self
, which isn't valid because it's all explicitly designed to work across multiple threads, meaning the guarantees of&mut self
don't hold. This entire implementation dates back to Fall 2013, which is long before the multithreading of&self
vs&mut self
was even decided!We should update these implementation details to basically never use
&mut self
but instead useUnsafeCell
where appropriate.The text was updated successfully, but these errors were encountered: