From d1dc1060df18fe6d00367368b150b2b90e76fd14 Mon Sep 17 00:00:00 2001 From: Vladislav Grishenko Date: Thu, 30 Dec 2021 19:08:42 +0500 Subject: vlib: stop worker threads on main loop exit If not, worker threads may continue own loops after deinit and/or thread0 exit with related crashes due no rpc capability, unmapped shared memory, etc. Main loop exit handlers that uses barrier sync will be happy too as long as recursive barrier sync is supported. Type: feature Signed-off-by: Vladislav Grishenko Change-Id: I255a796b06936d96715683e3f062128060233dc6 --- src/vlib/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/vlib') diff --git a/src/vlib/main.c b/src/vlib/main.c index dc21a3f2c67..95131da2f39 100644 --- a/src/vlib/main.c +++ b/src/vlib/main.c @@ -2010,7 +2010,9 @@ vlib_main (vlib_main_t * volatile vm, unformat_input_t * input) vlib_main_loop (vm); done: + /* Stop worker threads, barrier will not be released */ vlib_worker_thread_barrier_sync (vm); + /* Call all exit functions. */ { clib_error_t *sub_error; @@ -2018,7 +2020,6 @@ done: if (sub_error) clib_error_report (sub_error); } - vlib_worker_thread_barrier_release (vm); if (error) clib_error_report (error); -- cgit 1.2.3-korg