[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [Libvir] [PATCH] deep copy dom structure
- From: Daniel Veillard <veillard redhat com>
- To: "Daniel P. Berrange" <berrange redhat com>
- Cc: libvir-list redhat com
- Subject: Re: [Libvir] [PATCH] deep copy dom structure
- Date: Mon, 31 Mar 2008 08:12:19 -0400
On Mon, Mar 31, 2008 at 01:02:49PM +0100, Daniel P. Berrange wrote:
> On Mon, Mar 31, 2008 at 11:00:56AM +0100, Richard W.M. Jones wrote:
> > The 'conn', 'dom' and 'net' fields in a virterror can't be accessed
> > safely, particularly from a garbage-collected language. The only safe
> > thing one could do with them is a physical equality test on the
> > pointer against an existing conn/dom/net pointer.
> >
> > But the solution isn't to copy the dom object, since in a GC-d
> > language someone could grab a handle to the copied dom which would
> > have a different lifetime from the error object. If anything the
> > solution would be to remove those fields from the error object since
> > they are highly unlikely to be useful in any real world application.
> > We can't do this because of backwards compatibility promises but we
> > should instead deprecate them.
>
> We should at the very least NULL-ify the dom/net fields in the Error
> object associated with the Connection when we free the Domain/Network
> object.
agreed, very simple test but avoids dandling pointers.
> We also probably need to re-arrange the remote daemon code a
> little so that it serializes to XDR format before the Domain/Network object
> are free'd.
>
> I agree that deep copying isn't the answer here & messes up the reference
> counting and will cause potential memory leaks.
yes, this will become unmanageable very fast i'm afraid.
Daniel
--
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard | virtualization library http://libvirt.org/
veillard redhat com | libxml GNOME XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]