If you are seeing the total CPU graph flatline into a horizontal line while individual logical processors continue moving, this is caused by a confirmed off-by-one bug in TaskManagerDataLayer.dll.
What is happening
- Task Manager queries process information via
NtQuerySystemInformation. If process creation occurs during the query, the buffer overflows (STATUS_INFO_LENGTH_MISMATCH), triggering a retry loop (up to 3 times). - Due to an off-by-one in the retry counter check in
ProcessDataGenerator::QueryProcessInformation(RVA0x46158), exhausting all 3 retries is mistakenly treated as success (S_OK), publishing a truncated buffer. - The truncated buffer ends with a zeroed ghost record
{PID 0, CreateTime 0}. - Downstream
BaseAggregationManagerindexes processes by PID only and already holds the real System Idle Process{PID 0, CreateTime != 0}. TheCreateTimemismatch triggers invariant error0x8007139F(ERROR_INVALID_STATE). - This uncaught exception permanently terminates the background async update loop (
Core::DoAsyncWork). The total CPU graph keeps redrawing the last cached reading (the flat line).
Workaround & Status
Restarting Task Manager resets the data layer until the next burst of process creations triggers the condition again. Only Microsoft can fix the underlying retry boundary check.
- Upvote the official report in Feedback Hub: https://aka.ms/AA13rk15
- Full technical writeup & reproducible probe: https://github.com/lurunzi/taskmgr-flatline-watch