[libvirt] [PATCH] Fix race in ref counting when handling RPC jobs

Eric Blake eblake at redhat.com
Tue Jul 26 15:11:32 UTC 2011

On 07/26/2011 08:56 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange"<berrange at redhat.com>
> When an incoming RPC message is ready for processing,
>    virNetServerClientDispatchRead()
> will invoke the 'dispatchFunc' callback. This is set to
>    virNetServerDispatchNewMessage
> This function puts the message + client in a queue for processing by the thread
> pool. The thread pool worker function is
>    virNetServerHandleJob
> The first thing this does is acquire an extra reference on the 'client'.
> Unfortunately, between the time the message+client are put on the thread pool
> queue, and the time the worker runs, the client object may have had its last
> reference removed.
> We clearly need to add the reference to the client object before putting the
> client on the processing queue


Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

More information about the libvir-list mailing list