Opened 9 years ago
Closed 5 years ago
#14012 closed defect (obsolete)
After upgrade to 4.3.26 exception is raised if create second instance of VirtualBoxManager
| Reported by: | odlbo314 | Owned by: | |
|---|---|---|---|
| Component: | VM control | Version: | VirtualBox 4.3.26 |
| Keywords: | Cc: | ||
| Guest type: | Windows | Host type: | Linux |
Description
Hello! After upgrade from virtualbox 4.3.20 to 4.3.26 my code generates errors.
Small example to reproduce error:
#!/usr/bin/env python from vboxapi import VirtualBoxManager VirtualBoxManager(None, None) VirtualBoxManager(None, None)
Output of the script:
init exception: 'NoneType' object has no attribute '__getitem__'
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/vboxapi/__init__.py", line 981, in __init__
self.vbox = self.platform.getVirtualBox()
File "/usr/lib/python2.7/dist-packages/vboxapi/__init__.py", line 735, in getVirtualBox
return xpcom.components.classes["@virtualbox.org/VirtualBox;1"].createInstance()
TypeError: 'NoneType' object has no attribute '__getitem__'
Traceback (most recent call last):
File "./test_script.py", line 5, in <module>
VirtualBoxManager(None, None)
File "/usr/lib/python2.7/dist-packages/vboxapi/__init__.py", line 992, in __init__
raise e
TypeError: 'NoneType' object has no attribute '__getitem__'
Also this exception is raised if create instances of VirtualBoxManager in different Python threads.
Seems this error occurs because method "observe" of class "_ShutdownObserver" from module "xpcom.components" executes and set variable global xpcom.components.classes to None.
Note:
See TracTickets
for help on using tickets.


Hello again! I've recognized following workaround. Seems scripts using python API for virtualbox works normally if share one copy of VirtualBoxManager between threads.
Btw... Is it normal solution?