When aborting a task with JoinHandle::abort, the future is dropped in the
thread calling abort if the task is not currently being executed. This is
incorrect for tasks spawned on a LocalSet.
This can easily result in race conditions as many projects use Rc or RefCell
in their Tokio tasks for better performance.
tokio
0.3.7
>=1.5.1, <1.6.0,>=1.6.3, <1.7.0,>=1.7.2, <1.8.0,>=1.8.1
<0.3.0
When aborting a task with
JoinHandle::abort
, the future is dropped in the thread calling abort if the task is not currently being executed. This is incorrect for tasks spawned on aLocalSet
.This can easily result in race conditions as many projects use
Rc
orRefCell
in their Tokio tasks for better performance.See tokio#3929 for more details.
See advisory page for additional details.