From bb08ffbaf436e291b4be5cf7a471dda9744bfade Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 4 Sep 2011 15:48:09 -0700 Subject: Refactor task failure a bit Issue #236 --- src/rt/rust_task.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/rt/rust_task.cpp') diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index 4ce6e44879b..993a6b25cfb 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -244,6 +244,7 @@ rust_task::fail() { // See note in ::kill() regarding who should call this. DLOG(sched, task, "task %s @0x%" PRIxPTR " failing", name, this); backtrace(); + die(); // Unblock the task so it can unwind. unblock(); if (supervisor) { @@ -257,6 +258,8 @@ rust_task::fail() { if (NULL == supervisor && propagate_failure) sched->fail(); failed = true; + notify_tasks_waiting_to_join(); + yield(4); } void -- cgit 1.4.1-3-g733a5