Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QS takes a long time to list actions on files with the Eject action enabled #56

ghost opened this issue Feb 1, 2010 · 3 comments


Copy link

@ghost ghost commented Feb 1, 2010

When the Eject action in Core Support is enabled, it takes a second or so for any actions to appear for files. From taking a very quick look at it, it seems that the slowdown is caused by line 152 of QSActionProvider_EmbeddedProviders.m:
if ([[[NSWorkspace sharedWorkspace] mountedLocalVolumePaths] containsObject:[[dObject singleFilePath] stringByStandardizingPath]])

Copy link

@pjrobertson pjrobertson commented Feb 1, 2010

Again, I'm not seeing this problem.

It may be an issue with a plugin you have installed.

None of those methods are deprecated...

Copy link

@razzed razzed commented Oct 6, 2010

I am seeing identical behavior as @neurolepsy as well. Hitting enter after, say, launching Safari would take 5 or more seconds, sometimes much longer. I can run "Sample Process" on the beach ball and it would show me a very, very deep stack (over 200 deep) and the found method call was mountedLocalVolumePath.

Disabling the "Eject" functionality from the core made this disappear right away.

The final depths of the sample were:

2788 -[NSWorkspace mountedLocalVolumePaths]
  2788 _pathForFSRef
    2788 FSRefMakePathInternal(FSRef const*, unsigned char*, unsigned long)
      2788 FSMakePath(short, unsigned long, char const*, unsigned long, char*)
        2788 FSMount::getattrs(unsigned long, char const*, unsigned long, unsigned long, FSAttributeInfo*, unsigned long, unsigned char*)
          2788 FSMount::_getattrs(unsigned long, char const*, unsigned long, unsigned long, FSAttributeInfo*, unsigned long, unsigned char*)
            2788 FSMount::getattrscore(bool, char const*, unsigned long, char const*, unsigned long, FSAttributeInfo*, unsigned long, unsigned char*)
              2788 open$UNIX2003

If it's any help, I have iDisk with automatic syncing enabled, and an external 1TB USB drive which is currently unmounted.

If you want the sample, I have it, but most of the levels are a single call, like:

2788 0xe2168c

Recursive, I guess... Either that or a context switch function or something like that.

Copy link

@tiennou tiennou commented Feb 20, 2011

Make the Eject action validate by checking if file path starts with /Volumes/.

This is to prevent a stall while NSWorkspace do the query, the check if just moved to the actual execution.

Closed by dc6f316

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

No branches or pull requests

3 participants