Quoting Dwight Engen (dwight.en...@oracle.com):
> Hi guys,
> 
> So the line:
> 
>   r = lxc_grow_array((void ***)&h->all_mount_points,
>                      &h->all_mount_point_capacity, k + 1, 4);
> 
> in cgroup.c shows up in valgrind as a leak. I thought the appropriate
> fix was:
> 
> diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c
> index e27bc03..c5dc7e2 100644
> --- a/src/lxc/cgroup.c
> +++ b/src/lxc/cgroup.c
> @@ -1563,6 +1563,7 @@ void lxc_cgroup_hierarchy_free(struct
> cgroup_hierarchy *h) if (!h)
>               return;
>       lxc_free_array((void **)h->subsystems, free);
> +     lxc_free_array((void **)h->all_mount_points, free);
>       free(h);
>  }
>  
> which does free the allocated memory, but then causes a segv the next
> time free(line) in find_hierarchy_mountpts() is called. The trap is in
> libc::malloc_consolidate() so I think there is heap corruption going
> on. Any ideas?

Well the exact symptoms you describe are a bit fishy - I'd
expect a double-free warning right at the line you added.

I think you want to just free(h->all_mount_points).  The
all_mount_points[i] entries get set to 'mount_point' which are
also pointed to by meta_data, and which you freed right before
the loop calling lxc_cgroup_hierarchy_free().

Does just using free at this same spot fix it for you?

-serge

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to