From 06f4cb43f6bffe870116f2688dd5d5fc3d0af043 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 29 Nov 2011 22:22:49 -0800 Subject: rt: Delete the entire stack chain on task destruction Unwinding through __morestack on 64-bit Linux seems to be no big deal, and all we have to do is free the stacks to make unwinding work with split stacks. --- src/rt/rust_task.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/rt/rust_task.cpp') diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index 3933692f015..6c79ef3264a 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -178,7 +178,10 @@ rust_task::~rust_task() I(sched, ref_count == 0); // || // (ref_count == 1 && this == sched->root_task)); - del_stk(this, stk); + // Delete all the stacks. There may be more than one if the task failed + while (stk != NULL) { + del_stk(this, stk); + } } struct spawn_args { -- cgit 1.4.1-3-g733a5