Index: /trunk/src/VBox/Main/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl.cpp	(revision 24703)
+++ /trunk/src/VBox/Main/ConsoleImpl.cpp	(revision 24704)
@@ -5777,4 +5777,5 @@
 
                 /* Change the machine state from Running to Paused. */
+/** @todo Live Migration: Deal with Pause happening before VMR3Teleport! */
                 AssertBreak(that->mMachineState == MachineState_Running);
                 that->setMachineState(MachineState_Paused);
Index: /trunk/src/VBox/Main/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/MachineImpl.cpp	(revision 24703)
+++ /trunk/src/VBox/Main/MachineImpl.cpp	(revision 24704)
@@ -9311,5 +9311,5 @@
 
         /*
-         * Now grab the object lock and do the update
+         * Now grab the object lock, validate the state and do the update.
          */
         AutoCaller autoCaller(this);
@@ -9319,7 +9319,18 @@
 
         AssertReturn(mHWData->mPropertyServiceActive, VBOX_E_INVALID_OBJECT_STATE);
-
-        HRESULT rc = checkStateDependency(MutableStateDep);
-        CheckComRCReturnRC(rc);
+        switch (mData->mMachineState)
+        {
+            case MachineState_Paused:
+            case MachineState_Running:
+            case MachineState_Teleporting:
+            case MachineState_TeleportingPausedVM:
+            case MachineState_LiveSnapshotting:
+            case MachineState_Saving:
+                break;
+
+            default:
+                AssertMsgFailedReturn(("%s\n", Global::stringifyMachineState(mData->mMachineState)),
+                                      VBOX_E_INVALID_VM_STATE);
+        }
 
         mHWData.backup();
