
2011/8/1 Wen Congyang <wency@cn.fujitsu.com>:
At 07/30/2011 03:02 PM, Daniel Veillard Write:
I actually tagged and pushed the rc2 tarball and rpms yesterday but completely forgot to send the associated mail, oops !
ftp://libvirt.org/libvirt/libvirt-0.9.4-rc2.tar.gz
Hopefully it fixes most of the problems raised with rc1, including a number of leaks. Please report and if you had an issue with rc1 which is still not fixed there (or in git) please raise it ASAP. I'm planning for the final release early Tuesday 2 morning (i.e. late Monday for most :-)
If client(for example: virsh) exits unexpectedly, it will cause libvirtd crashed.
Steps to reproduce this problem(vm1 does not run): 1. for ((i=0; i < 50; i++)); do virsh managedsave vm1 & done; killall virsh
The reason is that we free virNetServerClient when the refs is not 0.
I'm not sure what you mean here. virNetClientFree frees the client when the last ref is removed.
I read the code under the directory src/rpc/, and find we have xxxRef(), but we do not have xxxUnref(). And sometimes we free the data structure if ref is not 0. We add an reference of the data structure, but sometimes we forget to unref it.
We already have an unref function it's called virNetClientFree. Are you referring to virNetClientClose that closes the connection and frees parts of the client? I tried to figure out the cleanup and ref counting logic in the RPC code in order to fix a memory leak triggered by virsh. https://www.redhat.com/archives/libvir-list/2011-July/msg02011.html It's complex and I don't understand it completely, as there is ref counting on multiple levels that is entangled with the event loop. -- Matthias Bolte http://photron.blogspot.com