[libvirt] [PATCH] Initialize gcrypt threading

Daniel Veillard veillard at redhat.com
Thu Dec 17 10:17:05 UTC 2009


On Thu, Dec 17, 2009 at 09:27:27AM +0000, Daniel P. Berrange wrote:
> On Thu, Dec 17, 2009 at 10:24:15AM +0100, Daniel Veillard wrote:
> > On Wed, Dec 16, 2009 at 06:46:52PM +0000, Daniel P. Berrange wrote:
> > > GNUTLS uses gcrypt for its crypto functions. gcrypt requires
> > > that the app/library initializes threading before using it.
> > > We don't want to force apps using libvirt to know about
> > > gcrypt, so we make virInitialize init threading on their
> > > behalf. This location also ensures libvirtd has initialized
> > > it correctly. This initialization is required even if libvirt
> > > itself were only using one thread, since another non-libvirt
> > > library (eg GTK-VNC) could also be using gcrypt from another
> > > thread
[...]
> >   Ah, subtle, I wonder how you realized that though :-)
> 
> If you don't have any thread callbacks set, libgcrypt  has some assert()
> code which attempts to detect if you use it from multiple threads. It is
> inherantly racey, but their assert code will abort() your app a reasonable
> amount of the time. We started seeing aborts of virt-manager in F12 since
> it more heavily uses multiple threads, particularly because GTK-VNC also
> uses thread and lots of libvirt & GTK-VNC stuff happends in separate
> threads.

  ah, okay !

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list