Index: /trunk/src/VBox/Main/Global.cpp
===================================================================
--- /trunk/src/VBox/Main/Global.cpp	(revision 23674)
+++ /trunk/src/VBox/Main/Global.cpp	(revision 23675)
@@ -210,3 +210,24 @@
 }
 
+/*static*/ const char *
+Global::stringifySessionState(SessionState_T aState)
+{
+    switch (aState)
+    {
+        case SessionState_Null:         return "Null";
+        case SessionState_Closed:       return "Closed";
+        case SessionState_Open:         return "Open";
+        case SessionState_Spawning:     return "Spawning";
+        case SessionState_Closing:      return "Closing";
+        default:
+        {
+            AssertMsgFailed(("%d (%#x)\n", aState, aState));
+            static char s_szMsg[48];
+            RTStrPrintf(s_szMsg, sizeof(s_szMsg), "InvalidState-0x%08x\n", aState);
+            return s_szMsg;
+        }
+
+    }
+}
+
 /* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/MachineImpl.cpp	(revision 23674)
+++ /trunk/src/VBox/Main/MachineImpl.cpp	(revision 23675)
@@ -3034,6 +3034,6 @@
         if (mData->mSession.mState != SessionState_Open)
             return setError(VBOX_E_INVALID_VM_STATE,
-                            tr("Machine session is not open (session state: %d)"),
-                            mData->mSession.mState);
+                            tr("Machine session is not open (session state: %s)"),
+                            Global::stringifySessionState(mData->mSession.mState));
 
         directControl = mData->mSession.mDirectControl;
@@ -3061,6 +3061,6 @@
         if (mData->mSession.mState != SessionState_Open)
             return setError(E_FAIL,
-                            tr("Machine session is not open (session state: %d)"),
-                            mData->mSession.mState);
+                            tr("Machine session is not open (session state: %s)"),
+                            Global::stringifySessionState(mData->mSession.mState));
 
         directControl = mData->mSession.mDirectControl;
@@ -3672,5 +3672,5 @@
                         mUserData->mName.raw());
 
-    LogFlowThisFunc(("mSession.mState=%d\n", mData->mSession.mState));
+    LogFlowThisFunc(("mSession.mState=%s\n", Global::stringifySessionState(mData->mSession.mState)));
 
     if (mData->mSession.mState == SessionState_Open ||
@@ -3889,5 +3889,5 @@
                         mUserData->mName.raw());
 
-    LogFlowThisFunc(("mSession.mState=%d\n", mData->mSession.mState));
+    LogFlowThisFunc(("mSession.mState=%s\n", Global::stringifySessionState(mData->mSession.mState)));
 
     if (mData->mSession.mState == SessionState_Open ||
@@ -4126,5 +4126,5 @@
             tr ("The machine '%ls' is not registered"), mUserData->mName.raw());
 
-    LogFlowThisFunc(("mSession.state=%d\n", mData->mSession.mState));
+    LogFlowThisFunc(("mSession.state=%s\n", Global::stringifySessionState(mData->mSession.mState)));
 
     if (mData->mSession.mState != SessionState_Open)
Index: /trunk/src/VBox/Main/SessionImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/SessionImpl.cpp	(revision 23674)
+++ /trunk/src/VBox/Main/SessionImpl.cpp	(revision 23675)
@@ -30,4 +30,5 @@
 #include "SessionImpl.h"
 #include "ConsoleImpl.h"
+#include "Global.h"
 
 #include "Logging.h"
@@ -50,5 +51,6 @@
         if (mState != SessionState_Open) \
             return setError (E_UNEXPECTED, \
-                tr ("The session is not open")); \
+                tr ("The session is not open (session state: %s)"), \
+                Global::stringifySessionState(mState)); \
     } while (0)
 
@@ -466,5 +468,5 @@
         AutoWriteLock alock(this);
 
-        LogFlowThisFunc(("mState=%d, mType=%d\n", mState, mType));
+        LogFlowThisFunc(("mState=%s, mType=%d\n", Global::stringifySessionState(mState), mType));
 
         if (mState == SessionState_Closing)
@@ -675,6 +677,6 @@
     if (mState != SessionState_Open)
         return setError (VBOX_E_INVALID_VM_STATE,
-            tr ("Machine session is not open (session state: %d)."),
-            mState);
+            tr ("Machine session is not open (session state: %s)."),
+            Global::stringifySessionState(mState));
     AssertReturn(mType == SessionType_Direct, VBOX_E_INVALID_OBJECT_STATE);
     CheckComArgNotNull(aName);
@@ -712,6 +714,6 @@
     if (mState != SessionState_Open)
         return setError (VBOX_E_INVALID_VM_STATE,
-            tr ("Machine session is not open (session state: %d)."),
-            mState);
+            tr ("Machine session is not open (session state: %s)."),
+            Global::stringifySessionState(mState));
     AssertReturn(mType == SessionType_Direct, VBOX_E_INVALID_OBJECT_STATE);
     if (!VALID_PTR (aPatterns) && (aPatterns != NULL))
@@ -758,5 +760,5 @@
     AutoWriteLock alock(this);
 
-    LogFlowThisFunc(("mState=%d, mType=%d\n", mState, mType));
+    LogFlowThisFunc(("mState=%s, mType=%d\n", Global::stringifySessionState(mState), mType));
 
     if (mState != SessionState_Open)
Index: /trunk/src/VBox/Main/include/Global.h
===================================================================
--- /trunk/src/VBox/Main/include/Global.h	(revision 23674)
+++ /trunk/src/VBox/Main/include/Global.h	(revision 23675)
@@ -122,4 +122,12 @@
      */
     static const char *stringifyMachineState(MachineState_T aState);
+
+    /**
+     * Stringify a session state.
+     *
+     * @returns Pointer to a read only string.
+     * @param   aState      Valid session state.
+     */
+    static const char *stringifySessionState(MachineState_T aState);
 };
 
