Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServicePageSharing.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServicePageSharing.cpp	(revision 29935)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServicePageSharing.cpp	(revision 29936)
@@ -397,4 +397,21 @@
     RTThreadUserSignal(RTThreadSelf());
 
+	/*
+	 * Block here first for a minute as using DONT_RESOLVE_DLL_REFERENCES is kind of risky; other code that uses LoadLibrary on a dll loaded like this
+	 * before will end up crashing the process as the dll's init routine was never called.
+	 *
+	 * We have to use this feature as we can't simply execute all init code in our service process.
+	 *
+	 */
+    int rc = RTSemEventMultiWait(g_PageSharingEvent, 60000);
+    if (*pfShutdown)
+        goto end;
+
+    if (rc != VERR_TIMEOUT && RT_FAILURE(rc))
+    {
+        VBoxServiceError("RTSemEventMultiWait failed; rc=%Rrc\n", rc);
+        goto end;
+    }
+
     /*
      * Now enter the loop retrieving runtime data continuously.
@@ -415,5 +432,5 @@
         if (*pfShutdown)
             break;
-        int rc = RTSemEventMultiWait(g_PageSharingEvent, 60000);
+        rc = RTSemEventMultiWait(g_PageSharingEvent, 60000);
         if (*pfShutdown)
             break;
@@ -425,4 +442,5 @@
     }
 
+end:
     RTSemEventMultiDestroy(g_PageSharingEvent);
     g_PageSharingEvent = NIL_RTSEMEVENTMULTI;
