[pve-devel] applied: [PATCH manager] status/graphite: fix memory leak, avoid cyclic closure reference
Thomas Lamprecht
t.lamprecht at proxmox.com
Tue Nov 19 09:16:31 CET 2019
On 11/19/19 9:14 AM, Thomas Lamprecht wrote:
> The data passed to this closure was never free'd, depending on the
> count of VM/CTs one could get >1 MB of RSS (!) memory leaked per
> statd status cycle update run...
>
> We could also use Scalar::Util's weaken, to weak a copy of this
> variable, but as a simple undef works lets do that with a comment..
>
> Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
> ---
>
> what a bummer... We need to check all (recursive) closures and ensure they are
> made undefined after they did their job..
>
> PVE/Status/Graphite.pm | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/PVE/Status/Graphite.pm b/PVE/Status/Graphite.pm
> index 14180aef..28fa65fd 100644
> --- a/PVE/Status/Graphite.pm
> +++ b/PVE/Status/Graphite.pm
> @@ -141,6 +141,8 @@ sub assemble {
> }
> };
> $assemble_graphite_data->($data, $path);
> +
> + $assemble_graphite_data = undef; # avoid cyclic reference!
> }
>
> PVE::JSONSchema::register_format('graphite-path', \&pve_verify_graphite_path);
>
forgot, already applied.. Thanks to Wolfgang for their moral and
counseling support..
More information about the pve-devel
mailing list