Thursday, March 31, 2011

bench3

Rundll32.exe Goes To Max CPU Usage

I've had this problem for a while now. Sometimes when attempting to start games (not really games, also applies to certain programs), I'll see the game's executable load, along with rundll32.exe. However that's where it stops, and Rundll goes on to hog an entire core's CPU time to itself, without the game continuing to load.

Sometimes the problem goes away after a few tries, sometimes I'm forced to actually reinstall the game. Heck, the solution is sometimes totally random, I've had the problem temporarily solved once by running DirectX setup, but that only solved it for one specific game.

When I check the taskmanager, and the commandline for rundll, here's what I get:
C:\Windows\system32\rundll32.exe C:\Windows\system32\gameux.dll,GameUXShim {029de72b-57a0-4780-aeba-a7d553e82745};D:\Program Files\PlayOnline\SquareEnix\PlayOnlineViewer\pol.exe;3972 now I know gameux.dll has something to do with the game explorer, the second part is the game executable in question, in this case Playonline, but I've had it with other games as well.

It sounds like Final Fantasy XI is somehow incompatible with Windows 7 at this stage. I'd try configuring the game to run in compatibility mode for Windows XP or Windows Vista. To do this, right click on the program .exe and open the Properties menu, then navigate to the compatibility tab and select "Run this program in compatibility mode for..." Failing that, you may want to seek support on the official forums, as we can't really support individual games here.

And compatibility mode doesn't work for all games or software's, I've tried that before. Other games that have had this problem are for example Civilisation IV and Railroad Tycoon 3.

Solution From Technet:

Here is a temporary solution: Believe it or not, I've fixed the problem for now by instructing the game explorer not to collect game usage data. Since I did that I haven't had this problem. So it leads me to suspect that the game explorer is in it on something. Judging from my experience with programming, I'm thinking when trying to launch a game, gameux.dll is called first to perform certain tasks (in this case perhaps a +1 on the game usage counter if asked to keep tabs), after which the DLLs of the game executable are loaded (that's what Rundll is for, loading DLLs).

But I think when loading and executing one function from the game explorer's DLL, rundll ends up in an endless loop internally (hence the max usage of 1 core). Since I've instruced the game explorer now to have as little to do as possible with the games as possible, not keeping tabs on usage, not downloading updates, etc etc, gameux.dll is probably loaded but not used, and rundll goes on nicely to loading the other DLLs.
Well that's my idea at least, built from experience in programming.

I've found this solution to work every time:

  • Kill the game's *.exe process, leaving rundll32.exe still running (SysInternals' procexp64.exe or procexp.exe show the process tree better than Task Manager, so it's worth downloading SysInternals Suite if you haven't already got it.  You'll see rundll32.exe as a sub-branch of the *.exe for the game.  Or, to put it another way, if you're not sure what the game's *.exe is called, it's the one above the rundll32.exe thread that's hogging all the CPU power!)
  • Restart the game.
  • Kill the rundll32.exe thread (or suspend it if you're at all a bit doubtful)

I just wanted to point out that it's safe to kill the rundll32.exe thread after the successful restart of the game.  This stops it hogging all that CPU power while you play - more performance, less heat.

As to the cause, I'm even more mystified than before.  I've tried the Game Explorer fixes and that seemed to work.  BuT one one machine, it works now for the Admin User (me and the 'serious work stuff') but not for the Guest User (games only).  Both users now have identical settings in Games Explorer but the Guest is locked off the internet, so maybe I have to connect and start each game once in that user.

bench3

About bench3 -

Haja Peer Mohamed H, Software Engineer by profession, Author, Founder and CEO of "bench3" you can connect with me on Twitter , Facebook and also onGoogle+

Subscribe to this Blog via Email :