From: Vladislav Grishenko Date: Thu, 30 Dec 2021 14:08:42 +0000 (+0500) Subject: vlib: stop worker threads on main loop exit X-Git-Tag: v23.10-rc0~162 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F21%2F35721%2F6;p=vpp.git 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 --- 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);