Index: /trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp	(revision 43298)
+++ /trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp	(revision 43299)
@@ -2043,7 +2043,13 @@
 
             case ProcessWaitResult_Error:
+                vrc = VERR_GENERAL_FAILURE; /** @todo Special guest control rc needed! */
+                break;
+
             case ProcessWaitResult_Terminate:
+                fDone = true;
+                break;
+
             case ProcessWaitResult_Timeout:
-                fDone = true;
+                vrc = VERR_TIMEOUT;
                 break;
 
@@ -2114,4 +2120,6 @@
     if (!pProcess.isNull())
     {
+        /** @todo Add pProcess.Terminate() here as soon as it's implemented. */
+
         Assert(pSession);
         int rc2 = pSession->processRemoveFromList(pProcess);
Index: /trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp	(revision 43298)
+++ /trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp	(revision 43299)
@@ -936,5 +936,11 @@
             case VERR_GENERAL_FAILURE: /** @todo Special guest control rc needed! */
                 setProgressErrorMsg(VBOX_E_IPRT_ERROR,
-                                    GuestProcess::guestErrorToString(vrc));
+                                    GuestProcess::guestErrorToString(guestRc));
+                break;
+
+            case VERR_INVALID_STATE: /** @todo Special guest control rc needed! */
+                setProgressErrorMsg(VBOX_E_IPRT_ERROR,
+                                    Utf8StrFmt(GuestSession::tr("Update file \"%s\" reported invalid running state"),
+                                               procInfo.mCommand.c_str()));
                 break;
 
