From 9ee1bfe9ac1c92a0640e64a463efd43c9c5a57ac Mon Sep 17 00:00:00 2001 From: Torsten Polle Date: Fri, 7 Mar 2014 14:39:31 -0600 Subject: [PATCH 7/8] Fix: stap/staprun deadlocks when probing ends. stap_stop_task_finder() exits utrace through utrace_exit(). At that time, there might be outstanding task workers. Hence, waiting for exiting the task work waits forever. Therefore exiting the task work is done after canceling all task workers. --- runtime/linux/task_finder2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/linux/task_finder2.c b/runtime/linux/task_finder2.c index e8f33a3..a3abc16 100644 --- a/runtime/linux/task_finder2.c +++ b/runtime/linux/task_finder2.c @@ -1875,10 +1875,10 @@ stap_stop_task_finder(void) debug_task_finder_report(); #endif - utrace_exit(); - /* Make sure all outstanding task work requests are canceled. */ __stp_tf_cancel_task_work(); + + utrace_exit(); } #endif /* TASK_FINDER2_C */ -- 1.8.3.1