From patchwork Mon Sep 30 08:21:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damijan Skvarc X-Patchwork-Id: 1169178 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="XWm8pN92"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46hb2c6bVCz9s7T for ; Mon, 30 Sep 2019 18:21:11 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 562F1157C; Mon, 30 Sep 2019 08:21:08 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id F1CB11578 for ; Mon, 30 Sep 2019 08:21:06 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id A4D6A71C for ; Mon, 30 Sep 2019 08:21:05 +0000 (UTC) Received: by mail-wr1-f66.google.com with SMTP id r5so10095978wrm.12 for ; Mon, 30 Sep 2019 01:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=dnUa2xUaviCql9Iaq4d8/huLeLvhFkgR8sUOvY+fMTE=; b=XWm8pN92jzcuD3/33ZHrghtqUCm+YTtSPiz1s2dUYcUYC7c6iqwHxYXiRud/+HzgI4 R3FK28kBn9jjz37ZfNgq8NeZJoguH232vwda5puG3ZoPbvAYa95HCeTA8q7JBQOblrtf pJmX4gqXD3MCCqoYwOrPRsCVskjUNbqyQHmb0mPQxRZkci0GsUk1e2G3CzlLSy9760ZV K0stMWdI1Q14ny5Of3O0QsSI4fDWzXfPEvtYRfCsnnM8tOpD/pSZk+/CuBubAjNe/URA 154D0pQkx/0KlGo8mSAHVE3PA7hfuQaP1pCbonnozOBQdKT9n4hqpszT/AOKYFs2gzZ2 9Mzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=dnUa2xUaviCql9Iaq4d8/huLeLvhFkgR8sUOvY+fMTE=; b=iqd+tVgr/3SJSOOycLN0doRb0GViTY5/A+pIUlFWc2DuZGctked9unajKEf2mklJpm zFVeApQ57U0sCU1ho4F96RqA6nQZdNO8/pHB3OCECwFLAk1d88j5k1a+bIwEaBUOe1yP 2ddUi8S9iQbSrIfNKluBsYuIB2Qt1HOnbDfHOhu4KqQtln43uq4p3QyRM4pBpFQvGuac mpGklG+AKUQ4D9FfvbByXu2i2x5//UQ58q1BIj8YUINi0eGwbRgixvcuOp4bCGvJjIPn vcuDbt9ahFMcS7q6hGsF8yQaXBYXha1v7BpmhK1rLRFJKhH5Lr/mzErfzJG7yq/0q3aZ wxcA== X-Gm-Message-State: APjAAAU9WqY38/Fw3RNwnjZWZ4t3Wbi6Kz+w7upeu6o9won3QpC9wUkI wKsnilKhnQFEZsW3fuFoxAejtUNgf38= X-Google-Smtp-Source: APXvYqyTpDY9UtJFKm6h+oiIRq6IvZ0U4FletzOkW8OgL8Uh44gux2q/0/HVRiFd1wzs7SgepgSzhQ== X-Received: by 2002:adf:e292:: with SMTP id v18mr13310443wri.232.1569831663666; Mon, 30 Sep 2019 01:21:03 -0700 (PDT) Received: from damijan-PC.i-tech.local (mail.i-tech.si. [89.212.78.105]) by smtp.gmail.com with ESMTPSA id r13sm21387966wrn.0.2019.09.30.01.21.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 30 Sep 2019 01:21:02 -0700 (PDT) From: Damijan Skvarc To: dev@openvswitch.org Date: Mon, 30 Sep 2019 10:21:00 +0200 Message-Id: <1569831660-31998-1-git-send-email-damjan.skvarc@gmail.com> X-Mailer: git-send-email 2.7.4 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH 1/1] ovsdb-client: fix memory leak in do_needs_conversion() and do_convert() X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Memory leak itself is not so important, however the problem is that it is caused by forgetting to close rpc channel which might in a long term lead to the leak of system resources. Memory leak is reported by Valgrin running test suite and is expressed as: ==29472== 784 (600 direct, 184 indirect) bytes in 1 blocks are definitely lost in loss record 23 of 23 ==29472== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==29472== by 0x449D32: xcalloc (util.c:121) ==29472== by 0x432147: jsonrpc_open (jsonrpc.c:87) ==29472== by 0x40ABBE: open_jsonrpc (ovsdb-client.c:528) ==29472== by 0x40ABBE: open_rpc (ovsdb-client.c:143) ==29472== by 0x40AE50: do_needs_conversion (ovsdb-client.c:1670) ==29472== by 0x405F76: main (ovsdb-client.c:282) ==29464== 784 (600 direct, 184 indirect) bytes in 1 blocks are definitely lost in loss record 23 of 23 ==29464== at 0x4C2FB55: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==29464== by 0x449D32: xcalloc (util.c:121) ==29464== by 0x432147: jsonrpc_open (jsonrpc.c:87) ==29464== by 0x40ABBE: open_jsonrpc (ovsdb-client.c:528) ==29464== by 0x40ABBE: open_rpc (ovsdb-client.c:143) ==29464== by 0x40AF5A: do_convert (ovsdb-client.c:1644) ==29464== by 0x405F76: main (ovsdb-client.c:282) Signed-off-by: Damijan Skvarc --- ovsdb/ovsdb-client.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c index e3ef372..e78e9d9 100644 --- a/ovsdb/ovsdb-client.c +++ b/ovsdb/ovsdb-client.c @@ -1657,6 +1657,7 @@ do_convert(struct jsonrpc *rpc, const char *database_ OVS_UNUSED, check_txn(jsonrpc_transact_block(rpc, request, &reply), &reply); jsonrpc_msg_destroy(reply); ovsdb_schema_destroy(new_schema); + jsonrpc_close(rpc); } static void @@ -1677,6 +1678,7 @@ do_needs_conversion(struct jsonrpc *rpc, const char *database_ OVS_UNUSED, puts(ovsdb_schema_equal(schema1, schema2) ? "no" : "yes"); ovsdb_schema_destroy(schema1); ovsdb_schema_destroy(schema2); + jsonrpc_close(rpc); } struct dump_table_aux {