Index: /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceStats.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceStats.cpp	(revision 56456)
+++ /trunk/src/VBox/Additions/common/VBoxService/VBoxServiceStats.cpp	(revision 56457)
@@ -214,10 +214,17 @@
 
     /* Unfortunately GetSystemTimes is XP SP1 and up only, so we need to use the semi-undocumented NtQuerySystemInformation */
+    bool fCpuInfoAvail = false;
     NTSTATUS rc = gCtx.pfnNtQuerySystemInformation(SystemProcessorPerformanceInformation, pProcInfo, cbStruct, &cbReturned);
     if (    !rc
         &&  cbReturned == cbStruct)
     {
-        for (uint32_t i = 0; i < systemInfo.dwNumberOfProcessors && i < VMM_MAX_CPU_COUNT; i++)
-        {
+        for (uint32_t i = 0; i < systemInfo.dwNumberOfProcessors; i++)
+        {
+            if (i >= VMM_MAX_CPU_COUNT)
+            {
+                VBoxServiceVerbose(3, "VBoxStatsReportStatistics: skipping information for CPU%u\n", i);
+                continue;
+            }
+
             if (gCtx.au64LastCpuLoad_Kernel[i] == 0)
             {
@@ -246,16 +253,4 @@
 
             req.guestStats.u32StatCaps |= VBOX_GUEST_STAT_CPU_LOAD_IDLE | VBOX_GUEST_STAT_CPU_LOAD_KERNEL | VBOX_GUEST_STAT_CPU_LOAD_USER;
-
-            gCtx.au64LastCpuLoad_Idle[i]   = pProcInfo[i].IdleTime.QuadPart;
-            gCtx.au64LastCpuLoad_Kernel[i] = pProcInfo[i].KernelTime.QuadPart;
-            gCtx.au64LastCpuLoad_User[i]   = pProcInfo[i].UserTime.QuadPart;
-        }
-    }
-    RTMemFree(pProcInfo);
-
-    for (uint32_t i = 0; i < systemInfo.dwNumberOfProcessors; i++)
-    {
-        if (i < VMM_MAX_CPU_COUNT)
-        {
             req.guestStats.u32CpuId = i;
             rc = VbglR3StatReport(&req);
@@ -264,7 +259,16 @@
             else
                 VBoxServiceVerbose(3, "VBoxStatsReportStatistics: DeviceIoControl (stats report) failed with %d\n", GetLastError());
-        }
-        else
-            VBoxServiceVerbose(3, "VBoxStatsReportStatistics: skipping information for CPU%u\n", i);
+
+            gCtx.au64LastCpuLoad_Idle[i]   = pProcInfo[i].IdleTime.QuadPart;
+            gCtx.au64LastCpuLoad_Kernel[i] = pProcInfo[i].KernelTime.QuadPart;
+            gCtx.au64LastCpuLoad_User[i]   = pProcInfo[i].UserTime.QuadPart;
+        }
+    }
+    RTMemFree(pProcInfo);
+
+    if (!fCpuInfoAvail)
+    {
+        VBoxServiceVerbose(3, "VBoxStatsReportStatistics: CPU info not available!\n");
+        rc = VbglR3StatReport(&req);
     }
 
