Index: /trunk/src/VBox/GuestHost/OpenGL/include/cr_glstate.h
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/include/cr_glstate.h	(revision 55797)
+++ /trunk/src/VBox/GuestHost/OpenGL/include/cr_glstate.h	(revision 55798)
@@ -271,4 +271,5 @@
     /* override default draw and read buffers to be used for offscreen rendering */
     GLint idOverrrideFBO;
+    uint32_t u32Version;
     uint32_t cElements;
     CRFBDataElement aElements[1];
Index: /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_diff.c
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_diff.c	(revision 55797)
+++ /trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_diff.c	(revision 55798)
@@ -314,4 +314,13 @@
 #endif
 
+            /* Before SSM version SHCROGL_SSM_VERSION_WITH_SEPARATE_DEPTH_STENCIL_BUFFERS
+             * saved state file contined invalid DEPTH/STENCIL data. In order to prevent
+             * crashes and improper guest App behavior, this data should be ignored. */
+            if (   data->u32Version < SHCROGL_SSM_VERSION_WITH_SEPARATE_DEPTH_STENCIL_BUFFERS
+                && (   el->enmFormat == GL_DEPTH_COMPONENT
+                    || el->enmFormat == GL_STENCIL_INDEX
+                    || el->enmFormat == GL_DEPTH_STENCIL))
+                continue;
+
             if (el->enmFormat == GL_DEPTH_COMPONENT || el->enmFormat == GL_DEPTH_STENCIL)
             {
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 55797)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 55798)
@@ -1289,4 +1289,6 @@
         }
     }
+
+    pData->u32Version = version;
 
     pData->cElements = 0;
