BitCrazed

Code, technology, opinion ... and who knows what else?

Month List

RecentComments

Comment RSS

Windows’ (RACENGN) Reliability Analysis Calculation Engine eating my laptop!

Over the last couple of weeks, I’ve noticed an odd thing about my primary laptop (Sony Vaio Z Series, Core i5 540M, 8GB RAM, Win7 x64)

  1. It’s running hotter and the fan runs continuously
  2. The performance isn’t what it should be
  3. The battery life isn’t as good as it usually is.

Sound familiar? Perhaps your machines are also experiencing the following issue. I’ve posted a temporary workaround for this issue below, but here’s how I got there…

Hunting-down the issue

Here’s my Task Manager’s performance graph on my laptop while running no other client applications:

image

Switching to the Processes tab, hitting “Show processes for all users” and sorting by CPU usage shows that taskhost.exe is eating 25% of my CPU:

image

Interesting. But what is taskhost running? For this we need to open SysInternals’ Process Explorer (run elevated on Win7/Vista to get additional debug info). Scrolling through the list of running processes shows taskhost.exe eating 25% of the CPU:

image

Double-click taskhost.exe to see what threads are busy:

image

Hmmm … RacEngn is the culprit. So what is RacEngn? Hit the module button and hit the details tab on the DLL’s property page:

image

So, this is the Windows Reliability Analysis Calculation Engine.

Close the DLL’s properties page and, back in ProcExp, double-click the overworking thread. You’ll see something similar to this:

ntoskrnl.exe!SeAccessCheckWithHint+0xb4a
ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x7d2
ntoskrnl.exe!KeWaitForMutexObject+0x19f
ntoskrnl.exe!PsIsSystemProcess+0x94
ntoskrnl.exe!KeStackAttachProcess+0x11c1
ntoskrnl.exe!ObReferenceObjectByPointerWithTag+0x233
RacEngn.dll+0x12230
RacEngn.dll+0x1217d
RacEngn.dll+0x120dd
RacEngn.dll+0x19052
RacEngn.dll+0x19e1b
RacEngn.dll+0x191da
RacEngn.dll+0x1cafb
RacEngn.dll+0x118bc
RacEngn.dll+0x117d3
RacEngn.dll!RacSysprepSpecialize+0x42a52
kernel32.dll!BaseThreadInitThunk+0xd
ntdll.dll!RtlUserThreadStart+0x21

The RAC Engine appears to be stuck after calling RacSysprepSpecialize.

Note that the top of the stack indicates that the function is stuck in the kernel’s SeAccessCheckWithHint function, but this is a red-herring as this kernel function is the mechanism through which Process Explorer reads the thread’s stack.

Now, I know that the RAC Engine is running under taskhost.exe which is a Scheduled Task. Opening the Scheduled Tasks app and navigating to "Task Scheduler Library/Microsoft/Windows/RAC” I can see that the RAC Engine is running:

image

Right click this task and hit “End” and suddenly my machine’s CPU quietens, the fan turns off, and things return to normal:

image

Temporary Workaround

For now, I’ve disabled the RAC engine’s task (right-click task and hit “Disable") until we can get to the bottom of this issue.

I posted some of these findings to the forum discussion where several others are also seeing this problem. I also sent this issue through to a Microsoft contact and will update this post with subsequent findings if and when I get some details/answers.

[Update 4/5/2011]

Apologies for not posting an update to this issue before now!

Microsoft looked into the problem described above and concluded that it was caused by a corrupt RACEngine data file and that I should delete the contents of %programdata%\Microsoft\RAC\StateData\. Since doing so, the problem has disappeared. Hope this helps someone.


Permalink | Comments (0) | Post RSSRSS comment feed
blog comments powered by Disqus