From: Kommula Shiva Shankar Date: Thu, 28 Jan 2021 07:35:59 +0000 (+0530) Subject: vlib: acquire barrier before exit call X-Git-Tag: v21.10-rc0~636 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=ced43e28ed89172f68de5655d114b289233b2581 vlib: acquire barrier before exit call Type: fix A plugin exit callback function registered via VLIB_MAIN_LOOP_EXIT_FUNCTION() is called without stopping worker cores doing data path processing. Following error is observed while exiting vpp. error log: vppctl# q 0: /vpp_master/src/vnet/interface.c:1058 (vnet_delete_hw_interface) assertion `ii == 0 || this_vlib_main->parked_at_barrier == 1' fails This patch calls all exit() functions after acquiring barrier Signed-off-by: Kommula Shiva Shankar Reviewed-by: Nitin Saxena Change-Id: I2fd565f0afaa62cb0fb0389922f49e4d382f028c --- diff --git a/src/vlib/main.c b/src/vlib/main.c index c76d874e991..77c69794d0f 100644 --- a/src/vlib/main.c +++ b/src/vlib/main.c @@ -2246,6 +2246,7 @@ vlib_main (vlib_main_t * volatile vm, unformat_input_t * input) vlib_main_loop (vm); done: + vlib_worker_thread_barrier_sync (vm); /* Call all exit functions. */ { clib_error_t *sub_error; @@ -2253,6 +2254,7 @@ done: if (sub_error) clib_error_report (sub_error); } + vlib_worker_thread_barrier_release (vm); if (error) clib_error_report (error);