Skip to content

Invalid usage of &mut self in std::sync::mpsc #36934

Closed

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions