Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 60546)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 60547)
@@ -435,4 +435,12 @@
     error(0, MessageType_Critical,
           tr("<p>Failed to create the VirtualBoxClient COM object.</p>"
+             "<p>The application will now terminate.</p>"),
+          formatErrorInfo(client));
+}
+
+void UIMessageCenter::cannotAcquireVirtualBox(const CVirtualBoxClient &client) const
+{
+    error(0, MessageType_Critical,
+          tr("<p>Failed to acquire the VirtualBox COM object.</p>"
              "<p>The application will now terminate.</p>"),
           formatErrorInfo(client));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 60546)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.h	(revision 60547)
@@ -160,4 +160,5 @@
     void cannotInitCOM(HRESULT rc) const;
     void cannotCreateVirtualBoxClient(const CVirtualBoxClient &client) const;
+    void cannotAcquireVirtualBox(const CVirtualBoxClient &client) const;
 
     /* API: Global warnings: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 60546)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 60547)
@@ -4016,10 +4016,16 @@
     }
 
-    /* Create VirtualBox client instance: */
+    /* Make sure VirtualBoxClient instance created: */
     m_client.createInstance(CLSID_VirtualBoxClient);
-    /* And make sure it was created: */
     if (!m_client.isOk())
     {
         msgCenter().cannotCreateVirtualBoxClient(m_client);
+        return;
+    }
+    /* Make sure VirtualBox instance acquired: */
+    m_vbox = m_client.GetVirtualBox();
+    if (!m_client.isOk())
+    {
+        msgCenter().cannotAcquireVirtualBox(m_client);
         return;
     }
@@ -4496,8 +4502,14 @@
         m_fWrappersValid = false;
         /* Re-fetch corresponding CVirtualBox to restart VBoxSVC: */
-        // CVirtualBox is still NULL in current Main implementation,
-        // and this call do not restart anything, so we are waiting
-        // for subsequent event about VBoxSVC is available again.
-        m_vbox = virtualBoxClient().GetVirtualBox();
+        m_vbox = m_client.GetVirtualBox();
+        if (!m_client.isOk())
+        {
+            // The proper behavior would be to show the message and to exit the app, e.g.:
+            // msgCenter().cannotAcquireVirtualBox(m_client);
+            // return QApplication::quit();
+            // But CVirtualBox is still NULL in current Main implementation,
+            // and this call do not restart anything, so we are waiting
+            // for subsequent event about VBoxSVC is available again.
+        }
     }
     /* If VBoxSVC is available: */
@@ -4506,4 +4518,11 @@
         if (!m_fWrappersValid)
         {
+            /* Re-fetch corresponding CVirtualBox: */
+            m_vbox = m_client.GetVirtualBox();
+            if (!m_client.isOk())
+            {
+                msgCenter().cannotAcquireVirtualBox(m_client);
+                return QApplication::quit();
+            }
             /* Re-init wrappers: */
             comWrappersReinit();
@@ -4526,5 +4545,4 @@
 {
     /* Re-fetch corresponding objects/values: */
-    m_vbox = virtualBoxClient().GetVirtualBox();
     m_host = virtualBox().GetHost();
     m_strHomeFolder = virtualBox().GetHomeFolder();
