virtualbox-python icon indicating copy to clipboard operation
virtualbox-python copied to clipboard

NS_ERROR_NO_INTERFACE

Open ManuelSchneid3r opened this issue 3 years ago • 4 comments

ENVIRONMENT
  • Operating System: archlinux
  • Python version: Python 3.9.0 (default, Oct 7 2020, 23:09:01) [GCC 10.2.0] on linux
  • VirtualBox version: 6.1.16-3
  • VirtualBox SDK version: 6.1.16-3
  • virtualbox-python / pyvbox version:2.1.1
>>> import virtualbox
>>> vbox = virtualbox.VirtualBox()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/manuel/.local/lib/python3.9/site-packages/virtualbox/library_ext/vbox.py", line 22, in __init__
    manager = virtualbox.Manager()
  File "/home/manuel/.local/lib/python3.9/site-packages/virtualbox/__init__.py", line 163, in __init__
    self.manager = vboxapi.VirtualBoxManager(mtype, mparams)
  File "/usr/lib/python3.9/site-packages/vboxapi/__init__.py", line 989, in __init__
    self.platform = PlatformXPCOM(dPlatformParams)
  File "/usr/lib/python3.9/site-packages/vboxapi/__init__.py", line 752, in __init__
    import xpcom.components
  File "/usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/components.py", line 240, in <module>
    _shutdownObserver = xpcom.server.WrapObject(_ShutdownObserver(), interfaces.nsIObserver)
  File "/usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/server/__init__.py", line 64, in WrapObject
    return _xpcom.WrapObject(policy( ob, iid ), iid, bWrapClient)
  File "/usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/server/policy.py", line 161, in __init__
    raise ServerException(nsError.NS_ERROR_NO_INTERFACE)
xpcom.ServerException: 0x80004002 (NS_ERROR_NO_INTERFACE)

ManuelSchneid3r avatar Dec 10 '20 20:12 ManuelSchneid3r

Same problem here on an up-to-date Arch Linux and virtualbox==2.1.1

kmille avatar Jan 19 '21 16:01 kmille

Fix for me (BUT I DONT KNOW WHAT I'M DOING): make two comments in /usr/lib/virtualbox/sdk/bindings/xpcom/python/xpcom/server/policy.py

root@linbox:server git diff policy.py.org policy.py
diff --git a/policy.py.org b/policy.py
index 7f84167..b36a304 100644
--- a/policy.py.org
+++ b/policy.py
@@ -157,8 +157,8 @@ class DefaultPolicy:
                 delegate_qi = getattr(instance, "_query_interface_", None)
                 # Perform the actual QI and throw away the result - the _real_
                 # QI performed by the framework will set things right!
-                if delegate_qi is None or not delegate_qi(iid):
-                    raise ServerException(nsError.NS_ERROR_NO_INTERFACE)
+                #if delegate_qi is None or not delegate_qi(iid):
+                #    raise ServerException(nsError.NS_ERROR_NO_INTERFACE)
         # Stuff for the magic interface conversion.
         self._interface_info_ = None
         self._interface_iid_map_ = {} # Cache - Indexed by (method_index, param_index)
root@linbox:server 

kmille avatar Jan 19 '21 16:01 kmille

Same problem on Python 3.9.2, Ubuntu 20.04, Virtualbox 6.1.26, virtualbox python 2.1.1. Commenting the lines @kmille mentioned worked for me too. Things (I wanted to work) are still working nonetheless. It was definitely working before on Python 3.8 on my setup, with the same Virtualbox SDK as far as I remember.

edumucelli avatar Oct 13 '21 07:10 edumucelli

same for me using vbox 6.1.26 - python 3.9.7 - Ubuntu 20.10, @kmille solution works, thanks!

xaviermarquez-alba avatar Dec 22 '21 04:12 xaviermarquez-alba