[pve-devel] memory leak in PVE/QMPClient.pm
    Stefan Priebe - Profihost AG 
    s.priebe at profihost.ag
       
    Fri Oct 26 11:36:32 CEST 2012
    
    
  
Hello list,
while debugging i found a memory leak in PVE/QMPClient.pm. The leak 
happens due to the self reference of $mux and setting $self as callback 
of mux.
Code:
sub new {
     my ($class, $eventcb) = @_;
     my $mux = new IO::Multiplex;
     my $self = bless {
         mux => $mux,
         fhs => {}, # $vmid => fh
         fhs_lookup => {}, # $fh => $vmid
         queue => {},
         current => {},
         errors => {},
     }, $class;
     $self->{eventcb} = $eventcb if $eventcb;
     $mux->set_callback_object($self);
     return $self;
}
To fix this we need a DESTROY function in QMPClient:
sub DESTROY {
     my ($self) = @_;
     $self->{mux} = undef;
}
This is enough to remove the circular reference.
Stefan
    
    
More information about the pve-devel
mailing list