On Monday 16 January 2012 11:34:53 Matthias Bolte wrote: > Okay, without looking deeper into this here are some ideas: > > The XPCOM API libvirt uses might not be threadsafe, or needs to be > initialized for every thread that wants to use it. Currently its only > initialized for the thread that opens the driver. I know that this is > the case on Windows were VirtualBox uses MSCOM for its API and you > need to call CoInitialize on every thread. This is currently not done > for the MSCOM glue in libvirt, so I know that on Windows the > VirtualBox driver is not threadsafe currently. Also I didn't look into > a solution for this yet. Maybe we need a thread local variable that > holds whether (MS/XP)COM was already initialized for this thread and > add a check to every driver function to initialize it when needed. > > Did you try to open a connection for each thread instead of trying to > share one? If that works reliable it might indicate that there is an > VirtualBox API initialization problem. I tried today with one connection for each thread and it works. I changed the vbox driver so that the pfnComInitialize function is called only when the first connection is opened : it breaks the test, even with one connection per thread. I guess we'll have to use a thread local variable as you suggested, unless someone has a better idea to handle this problem. -- Jean-Baptiste ROUAULT Ingénieur R&D - diateam : Architectes de l'information Phone : +33 (0)2 98 050 050 Fax : +33 (0)2 98 050 051