Don't attempt to wake tasks that aren't blocked.
It's possible for a supervised task to kill and wake its supervising task then immediately try to wake it again if the supervising task has joined the supervised. This is the easiest way to prevent that.
This commit is contained in:
committed by
Graydon Hoare
parent
2ec4325fe9
commit
73fd87baf5
@@ -420,7 +420,7 @@ rust_task::notify_tasks_waiting_to_join() {
|
||||
delete waiting_task;
|
||||
} else {
|
||||
rust_task *task = waiting_task->referent();
|
||||
if (task->dead() == false) {
|
||||
if (task->blocked() == true) {
|
||||
task->wakeup(this);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user