You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The internal `Channel` type's `Drop` method has a race
19
+
which could, in some circumstances, lead to a double-free.
20
+
This could result in memory corruption.
21
+
22
+
Quoting from the
23
+
[upstream description in merge request \#1187](https://github.com/crossbeam-rs/crossbeam/pull/1187#issue-2980761131):
24
+
25
+
> The problem lies in the fact that `dicard_all_messages` contained two paths that could lead to `head.block` being read but only one of them would swap the value. This meant that `dicard_all_messages` could end up observing a non-null block pointer (and therefore attempting to free it) without setting `head.block` to null. This would then lead to `Channel::drop` making a second attempt at dropping the same pointer.
26
+
27
+
The bug was introduced while fixing a memory leak, in
0 commit comments