VirtualBox

Opened 6 years ago

Last modified 6 years ago

#17364 new defect

With python3 find_machine always throws TypeError

Reported by: etam1024 Owned by:
Component: other Version: VirtualBox 5.1.30
Keywords: python3 Cc:
Guest type: other Host type: Linux

Description

I've managed to compile VBox on openSUSE Tumbleweed with support for Python 3.6 (it required some minor patching. everything is here: https://build.opensuse.org/package/show/home:etamPL:virtualbox_python36/virtualbox)

Now this happens:

from virtualbox import VirtualBox
v = VirtualBox()
>>> v.find_machine("testvm")
Traceback (most recent call last):
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library_base.py", line 195, in _call_method
    ret = method(*in_params)
  File "<XPCOMObject method 'findMachine'>", line 3, in findMachine
TypeError: internal error in PyXPCOM, parameter must be a bytes object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library.py", line 7280, in find_machine
    in_p=[name_or_id])
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library_base.py", line 186, in _call
    return self._call_method(method, in_p=in_p)
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library_base.py", line 212, in _call_method
    errobj.msg = getattr(exc, 'msg', getattr(exc, 'message'))
AttributeError: 'TypeError' object has no attribute 'message'
>>>
>>> v.find_machine(b"testvm")
Traceback (most recent call last):
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library_base.py", line 195, in _call_method
    ret = method(*in_params)
  File "<XPCOMObject method 'findMachine'>", line 3, in findMachine
TypeError: This parameter must be a unicode object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library.py", line 7280, in find_machine
    in_p=[name_or_id])
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library_base.py", line 186, in _call
    return self._call_method(method, in_p=in_p)
  File "/home/etam/.virtualenvs/vbox-test/lib/python3.6/site-packages/virtualbox/library_base.py", line 212, in _call_method
    errobj.msg = getattr(exc, 'msg', getattr(exc, 'message'))
AttributeError: 'TypeError' object has no attribute 'message'

This is caused by PyObject_AsNSString function in src/libs/xpcom18a4/python/src/VariantUtils.cpp which first checks if object is a unicode string and then passes it to PyUnicode_AsPRUnichar, which checks if it's bytes object.

Change History (1)

comment:1 by nox32, 6 years ago

Same problem here on Debian 9 and Virtualbox 5.1.30.

In [1]: from vboxapi import VirtualBoxManager

In [2]: mgr = VirtualBoxManager(None, None)

In [3]: vbox = mgr.vbox

In [4]: vbox.findMachine('test')


TypeError Traceback (most recent call last) <ipython-input-4-e0587a4315ea> in <module>()


/usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/client/init.py in findMachine(self, Param1)

TypeError: internal error in PyXPCOM, parameter must be a bytes object

Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use