On 10/18/2011 12:23 PM, Daniel P. Berrange wrote:
Hmm, I have a feeling this will cause a leak. Currently the virStreamPtr
reference is held by the daemon itself, and when the client disconnects
it free's the stream. With this extra reference held by the QEMU driver,
the virStreamPtr will live forever if a client disconnects, without
closing its stream. In fact I think it'll live forever even if the client
does an explicit finish/abort, since you only seem to release the reference
when the virDomainObjPtr is free'd, or when another console is opened.
Daniel
Yes, memory is being held allocated indefinitly after the first console
connection is made. I would not describe it as a leak, as if a new console
is opened or the domain object is freed, the old reference is free'd.
So no buildup of this memory is possible after the first connection is
made.
A possible solution to this (if allocating some extra bytes of memory is a
big issue), would be to internally add another callback to the fdstream,
and register a handler to it, that would free the reference to the stream
object and reset the pointer needed to detect a live session.
Otherwise I don't see any other possibility how to detect if the client
has disconnected and thus removing the stream object.
Peter