rerunning the failing performance test in CI testing as it was a false failure.
On Tue, Jun 25, 2024 at 2:39 AM zhaoxinxin <15957197...@163.com> wrote: > > The rte_vhost_driver_unregister() vhost_user_read_cb() > vhost_user_client_reconnect() can be called at the same time by 3 threads. > when memory of vsocket is freed in rte_vhost_driver_unregister(), > then vhost_user_read_cb() maybe add vsocket to reconn_list, > the invalid memory of vsocket is accessed in vhost_user_client_reconnect(). > It's a bug for vhost as client. > > E.g., vhostuser port is created as client. > Thread 1 calls rte_vhost_driver_unregister() to remove > the vsocket of reconn from the reconn list. > Then “vhost-events” thread calls vhost_user_read_cb() to > add the vsocket of reconn back to the reconn list. > At this time, after thread 1 releases the vsocket memory, > the socket of vhostuser reconnects successfully, > "vhost_reconn" thread will access the released memory. > > The core trace is: > Program terminated with signal 11, Segmentation fault. > The fix is to perform a delete operation again after releasing the memory > > Fixes: 451dc0f ("vhost: fix crash on port deletion") > Cc: sta...@dpdk.org > > Signed-off-by: Xinxin Zhao <15957197...@163.com> > --- > lib/vhost/socket.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/lib/vhost/socket.c b/lib/vhost/socket.c > index a75728a2e4..01946096c4 100644 > --- a/lib/vhost/socket.c > +++ b/lib/vhost/socket.c > @@ -1121,6 +1121,8 @@ rte_vhost_driver_unregister(const char *path) > if (vsocket->is_server) { > close(vsocket->socket_fd); > unlink(path); > + } else if (vsocket->reconnect) { > + vhost_user_remove_reconnect(vsocket); > } > > pthread_mutex_destroy(&vsocket->conn_mutex); > -- > 2.45.2 >