summary refs log tree commit diff
path: root/src/rt/rust_task_thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt/rust_task_thread.cpp')
-rw-r--r--src/rt/rust_task_thread.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/rt/rust_task_thread.cpp b/src/rt/rust_task_thread.cpp
index 87e8a616dfc..b42f1519933 100644
--- a/src/rt/rust_task_thread.cpp
+++ b/src/rt/rust_task_thread.cpp
@@ -389,12 +389,14 @@ rust_task_thread::prepare_c_stack() {
     I(this, !extra_c_stack);
     if (!cached_c_stack) {
         cached_c_stack = create_stack(kernel, C_STACK_SIZE);
+        config_valgrind_stack(cached_c_stack);
     }
 }
 
 void
 rust_task_thread::unprepare_c_stack() {
     if (extra_c_stack) {
+        unconfig_valgrind_stack(extra_c_stack);
         destroy_stack(kernel, extra_c_stack);
         extra_c_stack = NULL;
     }
@@ -412,7 +414,6 @@ rust_task_thread::borrow_c_stack() {
         your_stack = cached_c_stack;
         cached_c_stack = NULL;
     }
-    config_valgrind_stack(your_stack);
     return your_stack;
 }
 
@@ -420,7 +421,6 @@ rust_task_thread::borrow_c_stack() {
 void
 rust_task_thread::return_c_stack(stk_seg *stack) {
     I(this, !extra_c_stack);
-    unconfig_valgrind_stack(stack);
     if (!cached_c_stack) {
         cached_c_stack = stack;
     } else {