From: Dave Barach Date: Tue, 27 Jul 2021 13:27:07 +0000 (-0400) Subject: vlib: don't ASSERT(vm) in worker thread bootstrap X-Git-Tag: v22.02-rc0~168 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=37579c3bcd5f7c31bee4d16d97cfc71dea07fb76;p=vpp.git vlib: don't ASSERT(vm) in worker thread bootstrap Otherwise, threads declared with .no_data_structure_clone=1 crash on startup. Type: fix Signed-off-by: Dave Barach Change-Id: I5dcb25d1b61330fc9eee5427b815fcfcb9bf2153 --- diff --git a/src/vlib/threads.c b/src/vlib/threads.c index a33e70ab8d4..ad677dc32b9 100644 --- a/src/vlib/threads.c +++ b/src/vlib/threads.c @@ -407,14 +407,16 @@ vlib_worker_thread_bootstrap_fn (void *arg) { void *rv; vlib_worker_thread_t *w = arg; + vlib_main_t *vm = 0; w->lwp = syscall (SYS_gettid); w->thread_id = pthread_self (); __os_thread_index = w - vlib_worker_threads; - vlib_process_start_switch_stack (vlib_get_main_by_index (__os_thread_index), - 0); + vm = vlib_global_main.vlib_mains[__os_thread_index]; + + vlib_process_start_switch_stack (vm, 0); rv = (void *) clib_calljmp ((uword (*)(uword)) w->thread_function, (uword) arg, w->thread_stack + VLIB_THREAD_STACK_SIZE);