Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp	(revision 29774)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp	(revision 29775)
@@ -443,6 +443,7 @@
 
 #ifndef RT_OS_WINDOWS
-/*
- * Block all important signals, then explicitly wait until one of these signal arrives.
+/**
+ * Block all important signals, then explicitly wait until one of these
+ * signal arrives.
  */
 static void VBoxServiceWaitSignal(void)
@@ -458,6 +459,6 @@
     pthread_sigmask(SIG_BLOCK, &signalMask, NULL);
 
+    /* This loop is required on Solaris at least. FreeBSD doesn't know ERESTART. */
     int rc;
-#ifndef RT_OS_FREEBSD
     do
     {
@@ -466,9 +467,8 @@
     }
     while (   rc == EINTR
-           || rc == ERESTART);
-#else
-    iSignal = -1;
-    rc = sigwait(&signalMask, &iSignal);
-#endif
+#ifdef ERESTART
+           || rc == ERESTART
+#endif
+          );
 
     VBoxServiceVerbose(3, "VBoxServiceWaitSignal: Received signal %d (rc=%d)\n", iSignal, rc);
