Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 55806)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 55807)
@@ -6523,5 +6523,5 @@
     </method>
 
-    <method name="unregister" wrap-hint-server="limitedcaller">
+    <method name="unregister" wrap-hint-server="limitedcaller,passcaller">
       <desc>
         Unregisters a machine previously registered with
Index: /trunk/src/VBox/Main/include/MachineImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/MachineImpl.h	(revision 55806)
+++ /trunk/src/VBox/Main/include/MachineImpl.h	(revision 55807)
@@ -1115,5 +1115,6 @@
     HRESULT saveSettings();
     HRESULT discardSettings();
-    HRESULT unregister(CleanupMode_T aCleanupMode,
+    HRESULT unregister(AutoCaller &aAutoCaller,
+                       CleanupMode_T aCleanupMode,
                        std::vector<ComPtr<IMedium> > &aMedia);
     HRESULT deleteConfig(const std::vector<ComPtr<IMedium> > &aMedia,
Index: /trunk/src/VBox/Main/src-server/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 55806)
+++ /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 55807)
@@ -5065,11 +5065,8 @@
 
 /** @note Locks objects! */
-HRESULT Machine::unregister(CleanupMode_T aCleanupMode,
+HRESULT Machine::unregister(AutoCaller &autoCaller,
+                            CleanupMode_T aCleanupMode,
                             std::vector<ComPtr<IMedium> > &aMedia)
 {
-    // use AutoLimitedCaller because this call is valid on inaccessible machines as well
-    AutoLimitedCaller autoCaller(this);
-    AssertComRCReturnRC(autoCaller.rc());
-
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
 
