Index: /trunk/src/VBox/ValidationKit/testdriver/vbox.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 61930)
+++ /trunk/src/VBox/ValidationKit/testdriver/vbox.py	(revision 61931)
@@ -754,4 +754,12 @@
     def onMachineStateChange(self, sMachineId, eState):                         # pylint: disable=W0613
         """ Just interrupt the wait loop here so it can check again. """
+        _ = sMachineId; _ = eState;
+        self.oVBoxMgr.interruptWaitEvents();
+
+    def onRuntimeError(self, fFatal, sErrId, sMessage):
+        reporter.log('onRuntimeError/%s: fFatal=%d sErrId=%s sMessage=%s' % (self.sName, fFatal, sErrId, sMessage));
+        oSession = self.oSession;
+        if oSession is not None: # paranoia
+            oSession.signalTask();
         self.oVBoxMgr.interruptWaitEvents();
 
Index: /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 61930)
+++ /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 61931)
@@ -638,5 +638,10 @@
         This method returns False while the VM is online and running normally.
         """
-        fRc = self.__pollTask();
+
+        # Call super to check if the task was signalled by runtime error or similar,
+        # if not then check the VM state via __pollTask.
+        fRc = super(SessionWrapper, self).pollTask(fLocked);
+        if not fRc:
+            fRc = self.__pollTask();
 
         # HACK ALERT: Lazily try registering the console event handler if
