about summary refs log tree commit diff
path: root/src/rt/rust_task.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt/rust_task.cpp')
-rw-r--r--src/rt/rust_task.cpp3
1 files changed, 3 insertions, 0 deletions
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