1
Fork 0

[2/4 for #2365, #2671] Fix exit/kill race with tasks during rust_kernel::fail

This commit is contained in:
Ben Blum 2012-07-20 18:14:04 -04:00
parent 5bb4a12900
commit 18c645a883

View file

@ -68,11 +68,15 @@ rust_sched_loop::kill_all_tasks() {
killed = true;
for (size_t i = 0; i < running_tasks.length(); i++) {
all_tasks.push_back(running_tasks[i]);
rust_task *t = running_tasks[i];
t->ref();
all_tasks.push_back(t);
}
for (size_t i = 0; i < blocked_tasks.length(); i++) {
all_tasks.push_back(blocked_tasks[i]);
rust_task *t = blocked_tasks[i];
t->ref();
all_tasks.push_back(t);
}
}
@ -80,6 +84,7 @@ rust_sched_loop::kill_all_tasks() {
rust_task *task = all_tasks.back();
all_tasks.pop_back();
task->kill();
task->deref();
}
}