2011/8/1 Wen Congyang <wencongyang(a)gmail.com>:
At 08/01/2011 06:02 PM, Matthias Bolte write:
>
> 2011/8/1 Wen Congyang<wency(a)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.
Sorry for confusing you.
The reason is that:
In the function virNetServerClientClose(), we set client->sock to NULL while
we still use it.
Thanks.
Wen Congyang
Ah, you're talking about the server side. I only looked at the client
side of the RPC code while trying to understand the memleak.
--
Matthias Bolte
http://photron.blogspot.com