On Fri, 21 Jul 2017 22:39:31 +0300, Yuri Pankov wrote:
On Fri, 21 Jul 2017 12:30:26 -0700, Prakash Surya wrote:
Yuri,

Looking at our internal bug tracker at Delphix, I see a bug reporting
these leaks:

  > ffffff0340abac18::bufctl -v
              ADDR          BUFADDR        TIMESTAMP           THREAD
                              CACHE          LASTLOG         CONTENTS
ffffff0340abac18 ffffff0340a6d8d0       b207a68c7d ffffff035fda93c0
                   ffffff030e626588 ffffff0313c9c380 ffffff0317602cc8
                   kmem_cache_alloc_debug+0x2e0
                   kmem_cache_alloc+0xdd
                   kmem_alloc+0x4b
                   nv_alloc_sys+0x1f
                   nv_mem_zalloc+0x21
                   nvlist_xalloc+0x67
                   nvlist_alloc+0x2a
                   fnvlist_alloc+0x18
                   get_clones_stat+0x30
                   dsl_dataset_stats+0xcc
                   dmu_objset_stats+0x2e
                   zfs_ioc_objset_stats_impl+0x64
                   zfs_ioc_snapshot_list_next+0x15c
                   zfsdev_ioctl+0x527
                   cdev_ioctl+0x39

  > ffffff03422d3290::bufctl -v
              ADDR          BUFADDR        TIMESTAMP           THREAD
                              CACHE          LASTLOG         CONTENTS
ffffff03422d3290 ffffff03422acf90      627f3f04a3d ffffff032aadd7c0
                   ffffff030e628848 ffffff0310f74fc0 ffffff0319735b08
                   kmem_cache_alloc_debug+0x2e0
                   kmem_cache_alloc+0xdd
                   kmem_alloc+0x4b
                   nv_alloc_sys+0x1f
                   nv_mem_zalloc+0x21
                   nvp_buf_alloc+0x24
                   nvlist_add_common+0x11c
                   nvlist_copy_pairs+0x64
                   nvlist_copy_embedded+0x50
                   nvlist_add_common+0x36d
                   nvlist_add_nvlist+0x26
                   fnvlist_add_nvlist+0x19
                   spa_config_generate+0x1ff
                   spa_load_best+0xa1
                   spa_import+0x1e2
Additionally, it looks like we fixed it back in October, but I don't see
this change on illumos:

± g show
commit 51a86fc8ebe33698ddbbf5f54f5ea0d566f05de6 (HEAD -> illumos-master)
Author: Pavel Zakharov <[email protected]
<mailto:[email protected]>>
Date:   Thu Oct 6 11:13:12 2016 -0400

      DLPX-47890 nvlist memory leak in get_clones_stat() and spa_load_best()

diff --git a/usr/src/uts/common/fs/zfs/dsl_dataset.c
b/usr/src/uts/common/fs/zfs/dsl_dataset.c
index 81798db2fc..5706965ffe 100644
--- a/usr/src/uts/common/fs/zfs/dsl_dataset.c
+++ b/usr/src/uts/common/fs/zfs/dsl_dataset.c
@@ -1742,10 +1742,10 @@ get_clones_stat(dsl_dataset_t *ds, nvlist_t *nv)
                  fnvlist_add_nvlist(propval, ZPROP_VALUE, val);
                  fnvlist_add_nvlist(nv, zfs_prop_to_name(ZFS_PROP_CLONES),
                      propval);
-       } else {
-               nvlist_free(val);
-               nvlist_free(propval);
          }
+
+       nvlist_free(val);
+       nvlist_free(propval);
   }

   /*
diff --git a/usr/src/uts/common/fs/zfs/spa.c
b/usr/src/uts/common/fs/zfs/spa.c
index 8e72500722..4fa6a6c79a 100644
--- a/usr/src/uts/common/fs/zfs/spa.c
+++ b/usr/src/uts/common/fs/zfs/spa.c
@@ -3024,6 +3024,8 @@ spa_load_best(spa_t *spa, spa_load_state_t state,
int mosconfig,

          if (config && (rewind_error || state != SPA_LOAD_RECOVER))
                  spa_config_set(spa, config);
+       else
+               nvlist_free(config);

          if (state == SPA_LOAD_RECOVER) {
                  ASSERT3P(loadinfo, ==, NULL);

I can open a PR to openzfs to upstream this patch, but can you also
verify this fixes your issue? The stacks looks the same to me, but I
just want to verify with you before I make an incorrect assumption.

Sure, building, will let you know if it helps.

Yes, it helped, thanks.

BTW, may be the findleaks test could be added to the automation, if possible, of course?

------------------------------------------
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T858afbc054d53c06-M237540af7e5cd571df240c10
Powered by Topicbox: https://topicbox.com

Reply via email to