Index: trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp
===================================================================
--- trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp	(revision 98526)
+++ trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp	(revision 98690)
@@ -2674,4 +2674,54 @@
 
 /**
+ * Helper function which checks Guest Additions installation status.
+ *
+ * @returns IPRT status code.
+ * @param   pSession    Guest session to use.
+ * @param   osType      Guest type.
+ */
+int GuestSessionTaskUpdateAdditions::checkGuestAdditionsStatus(GuestSession *pSession, eOSType osType)
+{
+    int vrc = VINF_SUCCESS;
+#ifdef VBOX_WITH_GSTCTL_TOOLBOX_SUPPORT
+    int hrc;
+
+    if (osType == eOSType_Linux)
+    {
+        const Utf8Str ksStatusScript = Utf8Str("/usr/sbin/rcvboxadd");
+
+        /* Check if Guest Additions kernel modules were loaded. */
+        GuestProcessStartupInfo procInfo;
+        procInfo.mFlags = ProcessCreateFlag_None;
+        procInfo.mExecutable = Utf8Str("/bin/sh");;
+        procInfo.mArguments.push_back(procInfo.mExecutable); /* Set argv0. */
+        procInfo.mArguments.push_back(ksStatusScript);
+        procInfo.mArguments.push_back("status-kernel");
+
+        vrc = runFileOnGuest(pSession, procInfo);
+        if (RT_SUCCESS(vrc))
+        {
+            /* Replace the last argument with corresponding value and check
+             * if Guest Additions user services were started. */
+            procInfo.mArguments.pop_back();
+            procInfo.mArguments.push_back("status-user");
+
+            vrc = runFileOnGuest(pSession, procInfo);
+            if (RT_FAILURE(vrc))
+                hrc = setProgressErrorMsg(VBOX_E_GSTCTL_GUEST_ERROR,
+                                          Utf8StrFmt(tr("Automatic update of Guest Additions has failed: "
+                                                        "files were installed, but user services were not reloaded automatically. "
+                                                        "Please consider rebooting the guest")));
+        }
+        else
+            hrc = setProgressErrorMsg(VBOX_E_GSTCTL_GUEST_ERROR,
+                                      Utf8StrFmt(tr("Automatic update of Guest Additions has failed: "
+                                                    "files were installed, but kernel modules were not reloaded automatically. "
+                                                    "Please consider rebooting the guest")));
+    }
+#endif
+    return vrc;
+}
+
+/**
  * Helper function which waits until Guest Additions services started.
  *
@@ -2679,6 +2729,7 @@
  *          started on time.
  * @param   pGuest      Guest interface to use.
+ * @param   osType      Guest type.
  */
-int GuestSessionTaskUpdateAdditions::waitForGuestSession(ComObjPtr<Guest> pGuest)
+int GuestSessionTaskUpdateAdditions::waitForGuestSession(ComObjPtr<Guest> pGuest, eOSType osType)
 {
     int vrc                         = VERR_GSTCTL_GUEST_ERROR;
@@ -2714,4 +2765,11 @@
                 if (RT_SUCCESS(vrc))
                 {
+                    /* Make sure Guest Additions were reloaded on the guest side. */
+                    vrc = checkGuestAdditionsStatus(pSession, osType);
+                    if (RT_SUCCESS(vrc))
+                        LogRel(("Guest Additions were successfully reloaded after installation\n"));
+                    else
+                        LogRel(("Guest Additions were failed to reload after installation, please consider rebooting the guest\n"));
+
                     vrc = pSession->Close();
                     vrcRet = VINF_SUCCESS;
@@ -3228,5 +3286,5 @@
 
                             /* Wait for VBoxService to restart. */
-                            vrc = waitForGuestSession(pSession->i_getParent());
+                            vrc = waitForGuestSession(pSession->i_getParent(), osType);
                             if (RT_FAILURE(vrc))
                                 hrc = setProgressErrorMsg(VBOX_E_IPRT_ERROR,
