diff options
| author | Ben Blum <bblum@andrew.cmu.edu> | 2013-07-31 19:48:38 -0400 |
|---|---|---|
| committer | Ben Blum <bblum@andrew.cmu.edu> | 2013-08-01 17:07:31 -0400 |
| commit | 963d37e821590b470f7a1fc9cfcda5a5ceceeee4 (patch) | |
| tree | 0f3fb8984b6e0dc76dad4d64014e8aff2eebb348 /src/libstd/rt/task.rs | |
| parent | aeaed77301397c6ab0c4f5413dbd4b7f0d5b5c9a (diff) | |
| download | rust-963d37e821590b470f7a1fc9cfcda5a5ceceeee4.tar.gz rust-963d37e821590b470f7a1fc9cfcda5a5ceceeee4.zip | |
Temporary workaround to prevent taskgroup cleanup code from failing without an exception handler.
Diffstat (limited to 'src/libstd/rt/task.rs')
| -rw-r--r-- | src/libstd/rt/task.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs index c1b799796d1..f7f1b10e58c 100644 --- a/src/libstd/rt/task.rs +++ b/src/libstd/rt/task.rs @@ -129,8 +129,13 @@ impl Task { } self.unwinder.try(f); - { let _ = self.taskgroup.take(); } - self.death.collect_failure(!self.unwinder.unwinding); + // FIXME(#7544): We pass the taskgroup into death so that it can be + // dropped while the unkillable counter is set. This should not be + // necessary except for an extraneous clone() in task/spawn.rs that + // causes a killhandle to get dropped, which mustn't receive a kill + // signal since we're outside of the unwinder's try() scope. + // { let _ = self.taskgroup.take(); } + self.death.collect_failure(!self.unwinder.unwinding, self.taskgroup.take()); self.destroy(); } |
