From f57fd8de1f771b48055e665950dc678fbaf38de1 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 18 Dec 2011 15:21:16 -0800 Subject: rt: Run the cycle collector on the C stack --- src/rt/rust_task.cpp | 4 +++- 1 file changed, 3 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 1a1a26fe73d..f74f821819c 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -284,7 +284,9 @@ void task_start_wrapper(spawn_args *a) failed = true; } - cc::do_cc(task); + // We're on the Rust stack and the cycle collector may recurse arbitrarily + // deep, so switch to the C stack + task->sched->c_context.call_shim_on_c_stack(task, (void*)cc::do_cc); rust_closure_env* env = (rust_closure_env*)a->a3; if(env) { -- cgit 1.4.1-3-g733a5