-
Couldn't load subscription status.
- Fork 13.9k
Closed
Labels
E-help-wantedCall for participation: Help is requested to fix this issue.Call for participation: Help is requested to fix this issue.I-unsoundIssue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/SoundnessIssue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/Soundness
Description
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 use UnsafeCell where appropriate.
Metadata
Metadata
Assignees
Labels
E-help-wantedCall for participation: Help is requested to fix this issue.Call for participation: Help is requested to fix this issue.I-unsoundIssue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/SoundnessIssue: A soundness hole (worst kind of bug), see: https://en.wikipedia.org/wiki/Soundness