VirtualBox

Opened 9 years ago

Closed 4 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.

Change History (2)

comment:1 by odlbo314, 9 years ago

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?

Version 0, edited 9 years ago by odlbo314 (next)

comment:2 by aeichner, 4 years ago

Resolution: obsolete
Status: newclosed
Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use