1
Fork 0

Refactor task failure a bit

Issue #236
This commit is contained in:
Brian Anderson 2011-09-04 15:48:09 -07:00
parent 1339d05434
commit bb08ffbaf4
2 changed files with 3 additions and 3 deletions

View file

@ -244,6 +244,7 @@ rust_task::fail() {
// See note in ::kill() regarding who should call this. // See note in ::kill() regarding who should call this.
DLOG(sched, task, "task %s @0x%" PRIxPTR " failing", name, this); DLOG(sched, task, "task %s @0x%" PRIxPTR " failing", name, this);
backtrace(); backtrace();
die();
// Unblock the task so it can unwind. // Unblock the task so it can unwind.
unblock(); unblock();
if (supervisor) { if (supervisor) {
@ -257,6 +258,8 @@ rust_task::fail() {
if (NULL == supervisor && propagate_failure) if (NULL == supervisor && propagate_failure)
sched->fail(); sched->fail();
failed = true; failed = true;
notify_tasks_waiting_to_join();
yield(4);
} }
void void

View file

@ -92,10 +92,7 @@ upcall_fail(rust_task *task,
size_t line) { size_t line) {
LOG_UPCALL_ENTRY(task); LOG_UPCALL_ENTRY(task);
LOG_ERR(task, upcall, "upcall fail '%s', %s:%" PRIdPTR, expr, file, line); LOG_ERR(task, upcall, "upcall fail '%s', %s:%" PRIdPTR, expr, file, line);
task->die();
task->fail(); task->fail();
task->notify_tasks_waiting_to_join();
task->yield(4);
} }
/** /**