Index: /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_context.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_context.c	(revision 42590)
+++ /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_context.c	(revision 42591)
@@ -61,25 +61,10 @@
     thread->netServer.name = crStrdup( pack_spu.name );
     thread->netServer.buffer_size = pack_spu.buffer_size;
-    if (pack_spu.numThreads == 0) {
-        packspuConnectToServer( &(thread->netServer)
-#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
-                , pHgsmi
-#endif
-                );
-        if (!thread->netServer.conn) {
-            return NULL;
-        }
-        pack_spu.swap = thread->netServer.conn->swap;
-    }
-    else {
-        /* a new pthread */
-        crNetNewClient(&(thread->netServer)
-#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
-                , pHgsmi
-#endif
-        );
-        CRASSERT(thread->netServer.conn);
-    }
-
+    packspuConnectToServer( &(thread->netServer)
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+            , pHgsmi
+#endif
+            );
+    CRASSERT(thread->netServer.conn);
     /* packer setup */
     CRASSERT(thread->packer == NULL);
Index: /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c	(revision 42590)
+++ /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_misc.c	(revision 42591)
@@ -490,5 +490,5 @@
         thread->netServer.buffer_size = 64 * 1024;
 
-        crNetNewClient(&(thread->netServer)
+        packspuConnectToServer(&(thread->netServer)
 #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
                 , pHgsmi
Index: /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_net.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_net.c	(revision 42590)
+++ /trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_net.c	(revision 42591)
@@ -230,5 +230,5 @@
 }
 
-void packspuConnectToServer( CRNetServer *server
+static void packspuFirstConnectToServer( CRNetServer *server
 #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
                 , struct VBOXUHGSMI *pHgsmi
@@ -243,2 +243,30 @@
             );
 }
+
+void packspuConnectToServer( CRNetServer *server
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+                , struct VBOXUHGSMI *pHgsmi
+#endif
+        )
+{
+    if (pack_spu.numThreads == 0) {
+        packspuFirstConnectToServer( server
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+                , pHgsmi
+#endif
+                );
+        if (!server->conn) {
+            crError("packspuConnectToServer: no connection on first create!");
+            return;
+        }
+        pack_spu.swap = server->conn->swap;
+    }
+    else {
+        /* a new pthread */
+        crNetNewClient(server
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+                , pHgsmi
+#endif
+        );
+    }
+}
