vhost: core dump on quit with worker threads 37/6437/2
authorSteven <sluong@cisco.com>
Tue, 25 Apr 2017 20:49:51 +0000 (13:49 -0700)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 26 Apr 2017 15:37:08 +0000 (15:37 +0000)
Patch 6347 removed the socket file when the interface is deleted and
when VPP process is exitting. The CLI for deleting the interface has
builtin vlib_worker_thread_barrier_sync to prevent the worker
threads from running. Unfortunately, the CLI quit does not have the
builtin vlib_worker_thread_barrier_sync. As a result, it may cause the
worker thread to crash.

The fix is to add the vlib_worker_thread_barrier_sync in vhost_user_exit.

Change-Id: I1eff81170e131098f1799662f0ab48d6fca3def7
Signed-off-by: Steven <sluong@cisco.com>
src/vnet/devices/virtio/vhost-user.c

index 4f4f038..bcfef9f 100644 (file)
@@ -2589,11 +2589,13 @@ vhost_user_exit (vlib_main_t * vm)
   vhost_user_main_t *vum = &vhost_user_main;
   vhost_user_intf_t *vui;
 
+  vlib_worker_thread_barrier_sync (vlib_get_main ());
   /* *INDENT-OFF* */
   pool_foreach (vui, vum->vhost_user_interfaces, {
       vhost_user_delete_if (vnm, vm, vui->sw_if_index);
   });
   /* *INDENT-ON* */
+  vlib_worker_thread_barrier_release (vlib_get_main ());
   return 0;
 }