diff mbox

[ovs-dev] ovn: fix ovn-northd leaks in build_acl

Message ID 1471655210-2514-1-git-send-email-ramu.ramamurthy@gmail.com
State Changes Requested
Headers show

Commit Message

Ramu Ramamurthy Aug. 20, 2016, 1:06 a.m. UTC
From: Ramu Ramamurthy <ramu.ramamurthy@us.ibm.com>

The following leaks are due to missing ds_destroy in a few
places in build_acl.

5,850 bytes in 50 blocks are definitely lost in loss record 93 of 93
   at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x449507: xrealloc (util.c:123)
   by 0x42CC73: ds_reserve (dynamic-string.c:63)
   by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
   by 0x42D176: ds_put_format (dynamic-string.c:142)
   by 0x40D380: build_acls (ovn-northd.c:2320)
   by 0x40D380: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
   by 0x4072D9: build_lflows (ovn-northd.c:3845)
   by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
   by 0x4072D9: main (ovn-northd.c:4375)

9,360 bytes in 72 blocks are definitely lost in loss record 93 of 93
   at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x449507: xrealloc (util.c:123)
   by 0x42CC73: ds_reserve (dynamic-string.c:63)
   by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
   by 0x42D176: ds_put_format (dynamic-string.c:142)
   by 0x40D505: build_acls (ovn-northd.c:2346)
   by 0x40D505: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
   by 0x4072D9: build_lflows (ovn-northd.c:3845)
   by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
   by 0x4072D9: main (ovn-northd.c:4375)
---
 ovn/northd/ovn-northd.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Ryan Moats Aug. 25, 2016, 4:32 p.m. UTC | #1
"dev" <dev-bounces@openvswitch.org> wrote on 08/19/2016 08:06:50 PM:

> From: Ramu Ramamurthy <ramu.ramamurthy@gmail.com>
> To: dev@openvswitch.org
> Cc: Suryanarayan Ramamurthy/San Jose/IBM@IBMUS
> Date: 08/19/2016 08:07 PM
> Subject: [ovs-dev] [PATCH] ovn: fix ovn-northd leaks in build_acl
> Sent by: "dev" <dev-bounces@openvswitch.org>
>
> From: Ramu Ramamurthy <ramu.ramamurthy@us.ibm.com>
>
> The following leaks are due to missing ds_destroy in a few
> places in build_acl.
>
> 5,850 bytes in 50 blocks are definitely lost in loss record 93 of 93
>    at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x449507: xrealloc (util.c:123)
>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>    by 0x40D380: build_acls (ovn-northd.c:2320)
>    by 0x40D380: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>    by 0x4072D9: main (ovn-northd.c:4375)
>
> 9,360 bytes in 72 blocks are definitely lost in loss record 93 of 93
>    at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x449507: xrealloc (util.c:123)
>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>    by 0x40D505: build_acls (ovn-northd.c:2346)
>    by 0x40D505: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>    by 0x4072D9: main (ovn-northd.c:4375)
> ---
>  ovn/northd/ovn-northd.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> index 625937d..756d188 100644
> --- a/ovn/northd/ovn-northd.c
> +++ b/ovn/northd/ovn-northd.c
> @@ -2324,6 +2324,7 @@ build_acls(struct ovn_datapath *od, struct hmap
*lflows)
>                  ovn_lflow_add(
>                      lflows, od, S_SWITCH_OUT_ACL, 34000, ds_cstr
(&match),
>                      actions);
> +                ds_destroy(&match);
>              }
>          }
>
> @@ -2350,6 +2351,7 @@ build_acls(struct ovn_datapath *od, struct hmap
*lflows)
>                  ovn_lflow_add(
>                      lflows, od, S_SWITCH_OUT_ACL, 34000, ds_cstr
(&match),
>                      actions);
> +                ds_destroy(&match);
>              }
>          }
>      }
> --

Looks good to me on inspection, but I've not tried it out...

Acked-by: Ryan Moats <rmoats@us.ibm.com>
Ryan Moats Sept. 1, 2016, 11:36 p.m. UTC | #2
"dev" <dev-bounces@openvswitch.org> wrote on 08/19/2016 08:06:50 PM:

> From: Ramu Ramamurthy <ramu.ramamurthy@gmail.com>
> To: dev@openvswitch.org
> Cc: Suryanarayan Ramamurthy/San Jose/IBM@IBMUS
> Date: 08/19/2016 08:07 PM
> Subject: [ovs-dev] [PATCH] ovn: fix ovn-northd leaks in build_acl
> Sent by: "dev" <dev-bounces@openvswitch.org>
>
> From: Ramu Ramamurthy <ramu.ramamurthy@us.ibm.com>
>
> The following leaks are due to missing ds_destroy in a few
> places in build_acl.
>
> 5,850 bytes in 50 blocks are definitely lost in loss record 93 of 93
>    at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x449507: xrealloc (util.c:123)
>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>    by 0x40D380: build_acls (ovn-northd.c:2320)
>    by 0x40D380: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>    by 0x4072D9: main (ovn-northd.c:4375)
>
> 9,360 bytes in 72 blocks are definitely lost in loss record 93 of 93
>    at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-
> amd64-linux.so)
>    by 0x449507: xrealloc (util.c:123)
>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>    by 0x40D505: build_acls (ovn-northd.c:2346)
>    by 0x40D505: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>    by 0x4072D9: main (ovn-northd.c:4375)
> ---
>  ovn/northd/ovn-northd.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
> index 625937d..756d188 100644
> --- a/ovn/northd/ovn-northd.c
> +++ b/ovn/northd/ovn-northd.c
> @@ -2324,6 +2324,7 @@ build_acls(struct ovn_datapath *od, struct hmap
*lflows)
>                  ovn_lflow_add(
>                      lflows, od, S_SWITCH_OUT_ACL, 34000, ds_cstr
(&match),
>                      actions);
> +                ds_destroy(&match);
>              }
>          }
>
> @@ -2350,6 +2351,7 @@ build_acls(struct ovn_datapath *od, struct hmap
*lflows)
>                  ovn_lflow_add(
>                      lflows, od, S_SWITCH_OUT_ACL, 34000, ds_cstr
(&match),
>                      actions);
> +                ds_destroy(&match);
>              }
>          }
>      }
> --

I had given a base ack for this previously, and I can say that as of this
message that this is the last *definitive* loss of memory in ovn-northd,
ovn-controller, and ovsdb-server.

Because of that, I'd like to see this merge into master and 2.6 before
the release is cut...

Ryan

Ryan
Russell Bryant Sept. 1, 2016, 11:50 p.m. UTC | #3
On Fri, Aug 19, 2016 at 9:06 PM, Ramu Ramamurthy <ramu.ramamurthy@gmail.com>
wrote:

> From: Ramu Ramamurthy <ramu.ramamurthy@us.ibm.com>
>
> The following leaks are due to missing ds_destroy in a few
> places in build_acl.
>
> 5,850 bytes in 50 blocks are definitely lost in loss record 93 of 93
>    at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_
> memcheck-amd64-linux.so)
>    by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_
> memcheck-amd64-linux.so)
>    by 0x449507: xrealloc (util.c:123)
>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>    by 0x40D380: build_acls (ovn-northd.c:2320)
>    by 0x40D380: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>    by 0x4072D9: main (ovn-northd.c:4375)
>
> 9,360 bytes in 72 blocks are definitely lost in loss record 93 of 93
>    at 0x4C29BFD: malloc (in /usr/lib64/valgrind/vgpreload_
> memcheck-amd64-linux.so)
>    by 0x4C2BACB: realloc (in /usr/lib64/valgrind/vgpreload_
> memcheck-amd64-linux.so)
>    by 0x449507: xrealloc (util.c:123)
>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>    by 0x40D505: build_acls (ovn-northd.c:2346)
>    by 0x40D505: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>    by 0x4072D9: main (ovn-northd.c:4375)
> ---
>  ovn/northd/ovn-northd.c | 2 ++
>  1 file changed, 2 insertions(+)
>

I was about to apply this, but it's missing your Signed-off-by.  Can you
please re-submit with Signed-off-by included?

Thanks,
Ramu Ramamurthy Sept. 2, 2016, 12:12 a.m. UTC | #4
Hi Russell, I updated the patch with a Signed-off-by, but it landed
here as new on patchworks,
https://patchwork.ozlabs.org/patch/665079/
instead of updating the original here:
https://patchwork.ozlabs.org/patch/661079/

On Thu, Sep 1, 2016 at 4:50 PM, Russell Bryant <russell@ovn.org> wrote:
>
> On Fri, Aug 19, 2016 at 9:06 PM, Ramu Ramamurthy <ramu.ramamurthy@gmail.com>
> wrote:
>>
>> From: Ramu Ramamurthy <ramu.ramamurthy@us.ibm.com>
>>
>> The following leaks are due to missing ds_destroy in a few
>> places in build_acl.
>>
>> 5,850 bytes in 50 blocks are definitely lost in loss record 93 of 93
>>    at 0x4C29BFD: malloc (in
>> /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
>>    by 0x4C2BACB: realloc (in
>> /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
>>    by 0x449507: xrealloc (util.c:123)
>>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>>    by 0x40D380: build_acls (ovn-northd.c:2320)
>>    by 0x40D380: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>>    by 0x4072D9: main (ovn-northd.c:4375)
>>
>> 9,360 bytes in 72 blocks are definitely lost in loss record 93 of 93
>>    at 0x4C29BFD: malloc (in
>> /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
>>    by 0x4C2BACB: realloc (in
>> /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
>>    by 0x449507: xrealloc (util.c:123)
>>    by 0x42CC73: ds_reserve (dynamic-string.c:63)
>>    by 0x42D08F: ds_put_format_valist (dynamic-string.c:161)
>>    by 0x42D176: ds_put_format (dynamic-string.c:142)
>>    by 0x40D505: build_acls (ovn-northd.c:2346)
>>    by 0x40D505: build_lswitch_flows.constprop.36 (ovn-northd.c:2472)
>>    by 0x4072D9: build_lflows (ovn-northd.c:3845)
>>    by 0x4072D9: ovnnb_db_run (ovn-northd.c:3971)
>>    by 0x4072D9: main (ovn-northd.c:4375)
>> ---
>>  ovn/northd/ovn-northd.c | 2 ++
>>  1 file changed, 2 insertions(+)
>
>
> I was about to apply this, but it's missing your Signed-off-by.  Can you
> please re-submit with Signed-off-by included?
>
> Thanks,
>
> --
> Russell Bryant
diff mbox

Patch

diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index 625937d..756d188 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -2324,6 +2324,7 @@  build_acls(struct ovn_datapath *od, struct hmap *lflows)
                 ovn_lflow_add(
                     lflows, od, S_SWITCH_OUT_ACL, 34000, ds_cstr(&match),
                     actions);
+                ds_destroy(&match);
             }
         }
 
@@ -2350,6 +2351,7 @@  build_acls(struct ovn_datapath *od, struct hmap *lflows)
                 ovn_lflow_add(
                     lflows, od, S_SWITCH_OUT_ACL, 34000, ds_cstr(&match),
                     actions);
+                ds_destroy(&match);
             }
         }
     }