From patchwork Wed Jun 7 00:37:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Zhukov X-Patchwork-Id: 1791485 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=yandex.ru header.i=@yandex.ru header.a=rsa-sha256 header.s=mail header.b=q8ytMXN/; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QbT8c5HhBz20Ty for ; Wed, 7 Jun 2023 10:42:55 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 6EA7960EB6; Wed, 7 Jun 2023 00:42:52 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 6EA7960EB6 Authentication-Results: smtp3.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yandex.ru header.i=@yandex.ru header.a=rsa-sha256 header.s=mail header.b=q8ytMXN/ X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CZ6GqQ4QCoTY; Wed, 7 Jun 2023 00:42:51 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 8222A60B51; Wed, 7 Jun 2023 00:42:50 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 8222A60B51 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 4B04DC007A; Wed, 7 Jun 2023 00:42:50 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 623DEC0029 for ; Wed, 7 Jun 2023 00:42:48 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 31FBB41960 for ; Wed, 7 Jun 2023 00:42:48 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 31FBB41960 Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key) header.d=yandex.ru header.i=@yandex.ru header.a=rsa-sha256 header.s=mail header.b=q8ytMXN/ X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HGvkI3Tz_1cy for ; Wed, 7 Jun 2023 00:42:46 +0000 (UTC) X-Greylist: delayed 00:05:24 by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 9EBDD418E1 Received: from forward202b.mail.yandex.net (forward202b.mail.yandex.net [178.154.239.155]) by smtp4.osuosl.org (Postfix) with ESMTPS id 9EBDD418E1 for ; Wed, 7 Jun 2023 00:42:45 +0000 (UTC) Received: from forward102b.mail.yandex.net (forward102b.mail.yandex.net [IPv6:2a02:6b8:c02:900:1:45:d181:d102]) by forward202b.mail.yandex.net (Yandex) with ESMTP id 435B763A88 for ; Wed, 7 Jun 2023 03:37:24 +0300 (MSK) Received: from mail-nwsmtp-mxback-production-main-67.myt.yp-c.yandex.net (mail-nwsmtp-mxback-production-main-67.myt.yp-c.yandex.net [IPv6:2a02:6b8:c12:1da2:0:640:60c3:0]) by forward102b.mail.yandex.net (Yandex) with ESMTP id 1162260046 for ; Wed, 7 Jun 2023 03:37:15 +0300 (MSK) Received: from mail.yandex.ru (2a02:6b8:c12:540d:0:640:e88a:0 [2a02:6b8:c12:540d:0:640:e88a:0]) by mail-nwsmtp-mxback-production-main-67.myt.yp-c.yandex.net (mxback/Yandex) with HTTP id 5bH7C90WAqM0-5jykcoAv; Wed, 07 Jun 2023 03:37:14 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1686098234; bh=g4j1eHdahyfzbMIyrTRZ+/jkPWvMDpuKdXtzvrqnYSE=; h=Message-Id:Date:Subject:To:From; b=q8ytMXN/zU9i5VDJR3M4N0TRTfKsEffi9LHB+T5y3UXavInaaHkHba5OUCSYxmO4W bibY8nRZlI4C3/fFzzOGOqaDM8fpcQ3He2SUj9lEVjF5jjw10NWzX9N8pD55oVz2Kw hZZDHHBrCI40UedcRJC+xyq+vf/n7UvegbOdDSUw= Authentication-Results: mail-nwsmtp-mxback-production-main-67.myt.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Received: by gavdw3jrkjwbxdg3.myt.yp-c.yandex.net with HTTP; Wed, 07 Jun 2023 03:37:14 +0300 From: Igor Zhukov Envelope-From: fsb4000@yandex.ru To: dev@openvswitch.org MIME-Version: 1.0 X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Wed, 07 Jun 2023 07:37:14 +0700 Message-Id: <936751686098234@gavdw3jrkjwbxdg3.myt.yp-c.yandex.net> Subject: [ovs-dev] [PATCH ovn] call ovsrcu_exit() before exit in ovn-northd and ovn-controller to make valgrind happy X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" From: Igor Zhukov You can check logs by running: make check-valgrind TESTSUITEFLAGS="246" (Actually almost every test affected but for example we need one test) Valgrind message looks like ==65437== 304 bytes in 1 blocks are possibly lost in loss record 265 of 289 ==65437== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==65437== by 0x40149DA: allocate_dtv (dl-tls.c:286) ==65437== by 0x40149DA: _dl_allocate_tls (dl-tls.c:532) ==65437== by 0x4BE2322: allocate_stack (allocatestack.c:622) ==65437== by 0x4BE2322: pthread_create@@GLIBC_2.2.5 (pthread_create.c:660) ==65437== by 0x283D46: ovs_thread_create (in /home/ivzhukov/upstream/ovn/controller/ovn-controller) ==65437== by 0x27FFB0: ovsrcu_quiesced (in /home/ivzhukov/upstream/ovn/controller/ovn-controller) ==65437== by 0x28000B: ovsrcu_quiesce_start (in /home/ivzhukov/upstream/ovn/controller/ovn-controller) ==65437== by 0x2AFE04: time_poll (in /home/ivzhukov/upstream/ovn/controller/ovn-controller) ==65437== by 0x2A16A2: poll_block (in /home/ivzhukov/upstream/ovn/controller/ovn-controller) ==65437== by 0x165019: pinctrl_handler (in /home/ivzhukov/upstream/ovn/controller/ovn-controller) ==65437== by 0x283BB1: ovsthread_wrapper (in /home/ivzhukov/upstream/ovn/controller/ovn-controller) ==65437== by 0x4BE1608: start_thread (pthread_create.c:477) ==65437== by 0x4F5F132: clone (clone.S:95) or ==63926== 304 bytes in 1 blocks are possibly lost in loss record 128 of 130 ==63926== at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==63926== by 0x40149DA: allocate_dtv (dl-tls.c:286) ==63926== by 0x40149DA: _dl_allocate_tls (dl-tls.c:532) ==63926== by 0x4BE2322: allocate_stack (allocatestack.c:622) ==63926== by 0x4BE2322: pthread_create@@GLIBC_2.2.5 (pthread_create.c:660) ==63926== by 0x24EE4B: ovs_thread_create (in /home/ivzhukov/upstream/ovn/northd/ovn-northd) ==63926== by 0x24CB63: ovsrcu_quiesced (in /home/ivzhukov/upstream/ovn/northd/ovn-northd) ==63926== by 0x24CBBE: ovsrcu_quiesce_start (in /home/ivzhukov/upstream/ovn/northd/ovn-northd) ==63926== by 0x276DE6: time_poll (in /home/ivzhukov/upstream/ovn/northd/ovn-northd) ==63926== by 0x26BA03: poll_block (in /home/ivzhukov/upstream/ovn/northd/ovn-northd) ==63926== by 0x26A9FD: stopwatch_thread (in /home/ivzhukov/upstream/ovn/northd/ovn-northd) ==63926== by 0x24ECB6: ovsthread_wrapper (in /home/ivzhukov/upstream/ovn/northd/ovn-northd) ==63926== by 0x4BE1608: start_thread (pthread_create.c:477) ==63926== by 0x4F5F132: clone (clone.S:95) I also noticed that ovs-vswitchd calls ovsrcu_exit() before exit: https://github.com/openvswitch/ovs/blob/0187eadfce4505d502e57c0e688b830f0a1ec728/vswitchd/ovs-vswitchd.c#L150 I also stopped a thread pool by calling run_update_worker_pool(0); because ovsrcu_exit(); stucks without it. Signed-off-by: Igor Zhukov Acked-by: Mark Michelson --- controller/ovn-controller.c | 1 + northd/ovn-northd.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c index 3a81a13fb..a47406979 100644 --- a/controller/ovn-controller.c +++ b/controller/ovn-controller.c @@ -5620,6 +5620,7 @@ loop_done: free(cli_system_id); } service_stop(); + ovsrcu_exit(); exit(retval); } diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c index 3515b68a2..de807c0a4 100644 --- a/northd/ovn-northd.c +++ b/northd/ovn-northd.c @@ -33,6 +33,7 @@ #include "lib/ovn-l7.h" #include "lib/ovn-nb-idl.h" #include "lib/ovn-sb-idl.h" +#include "lib/ovs-rcu.h" #include "openvswitch/poll-loop.h" #include "simap.h" #include "stopwatch.h" @@ -1030,6 +1031,8 @@ main(int argc, char *argv[]) ovsdb_idl_loop_destroy(&ovnnb_idl_loop); ovsdb_idl_loop_destroy(&ovnsb_idl_loop); service_stop(); + run_update_worker_pool(0); + ovsrcu_exit(); exit(res); }