rt: Always delete task stacks on the task thread
There's not a real race here, but it makes helgrind happy and is arguably less prone to future errrors.
This commit is contained in:
@@ -121,13 +121,6 @@ rust_task::delete_this()
|
||||
I(thread, ref_count == 0); // ||
|
||||
// (ref_count == 1 && this == sched->root_task));
|
||||
|
||||
// Delete all the stacks. There may be more than one if the task failed
|
||||
// and no landing pads stopped to clean up.
|
||||
// FIXME: We should do this when the task exits, not in the destructor
|
||||
while (stk != NULL) {
|
||||
del_stack();
|
||||
}
|
||||
|
||||
thread->release_task(this);
|
||||
}
|
||||
|
||||
@@ -725,6 +718,16 @@ rust_task::check_stack_canary() {
|
||||
::check_stack_canary(stk);
|
||||
}
|
||||
|
||||
void
|
||||
rust_task::delete_all_stacks() {
|
||||
I(thread, !on_rust_stack());
|
||||
// Delete all the stacks. There may be more than one if the task failed
|
||||
// and no landing pads stopped to clean up.
|
||||
while (stk != NULL) {
|
||||
del_stack();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
rust_task::config_notify(chan_handle chan) {
|
||||
notify_enabled = true;
|
||||
|
||||
Reference in New Issue
Block a user