How do I find out what the Finder is busy with?

I'm running Snow Leopard on a MacBook Pro. My Finder has decided to be very busy, and neither restarting Finder nor a reboot cools it down. Spotlight doesn't report activity, Time Machine isn't busy, yet top -ocpu reports Finder is running between 30% and 100%.

Update: none of the suggestions have worked. At this point (three months after first asking the question), I'm resigned to wait until the new MacBook Pro comes out and start with a clean install. Very frustrating that there's no way to investigate what the Finder gets stuck on.


Solution 1:

The shell command...

sample Finder

...will monitor all the function calls being made by the Finder and create a text file showing the call stacks of each of the Finder's threads. Even knowledgeable non-programmers (super users, if you will) can often glean valuable insights from this. It's also a great thing to attach to a bug report to Apple via http://bugreport.apple.com/ .

This is basically the same as the "Sample process" button in Activity Monitor.


Update: Ooh, even better than sample(1) is spindump(8), which is like sample but adds visibility into what the kernel is doing when the app's threads are blocked waiting for the kernel.

sudo spindump Finder

The text file it creates in /tmp will require root privs to read, since it might contain privileged information.


More clues could be gleaned from...

lsof -p $PIDOfFinder

(where $PIDOfFinder is the process ID of the Finder, which you can find via ps.)

Looks like you can get that same information in Activity Monitor. Select Finder, hit the "Inspect" button, and select the "Open Files and Ports" tab.

Another interesting data point would be whether or not the problem happens for a new, clean user account on the same system. Just create a new user account, log out of your normal account (don't use Fast User Switching -- we don't want your "bad" instance of the Finder staying running in the background and confusing things), and log into the new clean account and see if the problem happens there too.

Are you running any InputManager hacks, including SIMBL-based stuff, or Unsanity Application Enhancer (APE) "haxies"?

Does the problem happen when booted into "Safe Mode" (that is, booted with the <shift> key held down)?

Solution 2:

Sadly, Apple doesn't provide any activity monitoring functionality for the Finder. So I would think that the best solution, if the Finder continues to misbehave, is to move its preference file: ~/Library/preferences/com.apple.finder.plist out of the preferences folder and restart it.