08/29/2012 07:08 PMPosted by UpgradeCurious, I dont know enough about advanced use on a Mac to find this information. How did you do it?
Find the process ID of WoW (ps ax | grep World); list the threads (ps uM pid#); one will be pegged at about 100% utilization, the rest will be at or close to 0%.
gdb -p pid# (have to have command-line tools installed, way to do that on the latest version of XCode is to go to preferences, Downloads, Components, select Install on command line tools).
Will show you a list of threads, some will have names, some won't. The 7th thread is the one using all the CPU time.
Will switch to thread 7, then show you where it is currently.
Will continue the program, then interrupt it, switch back to thread 7 and show where it's running.
To get out of gdb, enter command "quit". It will ask if you want to quit and detach, say yes.
Note that except for the time you "cont"inue it, WoW will be "paused". If you keep it paused too long you will probably be disconnected.
gdb does a better job at getting symbols than the sample in Activity Monitor, but you can look at it there as well. Select the World of Warcraft process, click inspect, then click Sample.
On the new window, select percent of thread, then notice that almost all the threads are 100% or close to 100% all the way down the line to the last item, which will be a system call (e.g. _select, _sem_wait, _psynch_cvwait, _semwait_signal, mach_msg_trap), all of which are "stop processing until something happens" types of things, which is proper behavior.
If you look at the 7th thread, you'll see it's actually doing stuff. Unfortunately, it doesn't display the symbols from WoW itself, only names from the standard system libraries.
It looks like processing the actual video (the floating leaves and such) takes a bit less than 1%, and doing the background music takes a bit less than that (on the login screen, that is). Everything else is either waiting or just barely registering as active.
BTW, I stopped at displaying symbols, wouldn't want to be violating Blizzard ToS...so I never single-stepped through to see what it's trying to do other than, presumably, Allocate something for Battle.net. Also, I doubt that it's in response to anything from the server, this is 100% a client bug, I'd give that 97% certainty.
If similar behavior was found in D3 when it was released, I'd guess that they both started from the same code base, which had a bug in it. They eventually fixed it in D3 (after it came out), but never pushed the changes over to WoW. Very sloppy, if so. Known bug, and you know another project is using it and no one makes sure that it's fixed everywhere? Ugh.