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

Problems launching applications #1777

Closed
iandol opened this issue Feb 13, 2014 · 36 comments
Closed

Problems launching applications #1777

iandol opened this issue Feb 13, 2014 · 36 comments
Milestone

Comments

@iandol
Copy link

@iandol iandol commented Feb 13, 2014

I've just upgraded to the developer build 4009 from developer build 4008 and I cannot now launch applications, for example textmate.app, chromium.app etc. only offers an "open file..." action:
screen shot 2014-02-13 at 09 29 47

I nevertheless still have all my actions (124 actions in my "All actions" list):
screen shot 2014-02-13 at 09 33 21

I will scrub my caches etc. and restart QS, just thought I'd report this anyway.

@iandol
Copy link
Author

@iandol iandol commented Feb 13, 2014

Hm, I've scrubbed my caches and deleted settings (renamed my QS app support folder and deleted my prefs.plist) and still the same behaviour...

@iandol
Copy link
Author

@iandol iandol commented Feb 13, 2014

And on another machine (both are on Mavericks 10.9.1), I don't have this problem, 4009 allows me to open, reveal etc an application.... I've moved my App support/Quicksilver folder rather than rename it, same problem. One interesting thing is even if I remove everything (both cache folders, app support folder and prefs plists), QS still seems to be getting some settings from somewhere because the setup dialog that normally greets me on a new QS install is not shown...

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 13, 2014

There are definitely some changes to the way files are created and actions are listed. We found and fixed a number of issues, but maybe something was overlooked.

Let’s start with this…

  1. Open ~/Library/Caches/Quicksilver/Indexes/QSPresetMainApplications.qsindex in TextMate.
  2. Find the entry for TextMate (or any other application where the actions aren’t showing up).
  3. Copy the entire <dict> for that application (starting from where its only indented by one tab). It should start about 6 lines above where you first see the application’s name.
  4. Paste it here.

If you didn’t know, you can make it easier to read by identifying it as XML to GitHub.

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 13, 2014

QS still seems to be getting some settings from somewhere because the setup dialog that normally greets me on a new QS install is not shown…

Preferences are cached like crazy in 10.9. Instead of deleting the file, just run defaults delete com.blacktree.Quicksilver. But there should be no need. Other than clearing caches, nothing is likely to make a difference. And for what it’s worth, caches were cleared automatically the first time you ran 4009. (It does that whenever the build number changes.)

@iandol
Copy link
Author

@iandol iandol commented Feb 14, 2014

I reverted to 4008, but here is the requisite textmate entry from yesterday morning's deleted cache file:

   <dict>
        <key>class</key>
        <string>QSObject</string>
        <key>data</key>
        <dict>
            <key>public.data</key>
            <string>/Applications/TextMate.app</string>
        </dict>
        <key>properties</key>
        <dict>
            <key>QSObjectName</key>
            <string>TextMate.app</string>
            <key>QSObjectObjectID</key>
            <string>/Applications/TextMate.app</string>
            <key>QSObjectType</key>
            <string>public.data</string>
        </dict>
    </dict>

And this morning from the working cache (build 4008):

<dict>
        <key>class</key>
        <string>QSObject</string>
        <key>data</key>
        <dict>
            <key>NSFilenamesPboardType</key>
            <string>/Applications/TextMate.app</string>
        </dict>
        <key>properties</key>
        <dict>
            <key>QSObjectName</key>
            <string>TextMate.app</string>
            <key>QSObjectObjectID</key>
            <string>/Applications/TextMate.app</string>
            <key>QSObjectType</key>
            <string>NSFilenamesPboardType</string>
        </dict>
    </dict>

Many many thanks for all your (you, Patrick and the others) hard work and energy on QS by the way!!!

@iandol
Copy link
Author

@iandol iandol commented Feb 14, 2014

One micro point regarding "It does that whenever the build number changes", indeed I can see the cache auto-deleted going from 4008 -> 4009 -- but reverting from 4009 -> 4008 and I need to delete cache manually. So cache seems to auto-clear on build number increment only (fair enough as I doubt many people downgrade their build)...

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 14, 2014

So cache seems to auto-clear on build number increment only (fair enough as I doubt many people downgrade their build)…

Correct. I didn’t want to go into all the details, but clearing caches on downgrade is something that was actually just added in 4009.

As for the actual problem: The contents of the cache file look like what I would expect, so I’m not sure exactly what’s going on. There are some other issues I’ve run across. Hopefully, while investigating those, I’ll find the answer to this as well.

@ylluminate
Copy link

@ylluminate ylluminate commented Feb 16, 2014

Same problem here. Tried to step back down to a previous version. Seemed to work, but then forgot autoupdate was on. Definitely having a regression on launching apps on the most recent drop. Can't use QS any longer as such and am resorting to other options until we get this default functionality back.

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 16, 2014

Note that if you have 4009, you’re all set up to get developer previews and problems like this are always a possibility. If you want something more reliable, I’d suggest switching the update type (in Preferences → Extras).

I’m not trying to steer anyone away from developer previews. This issue is a perfect example of why we need people to test them. But I want everyone to be aware so they can decide for themselves.

Now, is there anything “unusual” on your systems, like Spotlight disabled, home directories on a different disk, etc.?

@ylluminate
Copy link

@ylluminate ylluminate commented Feb 16, 2014

So spotlight has not been working right and I disabled it for some time. I also have my home (Users) ln'd to another volume... So yeah, a little non-standard stuff going on on this side. :)

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 17, 2014

So yeah, a little non-standard stuff going on on this side. :)

Nothing that we shouldn’t be able to accommodate, though. That gives us somewhere to start.

@iandol, it would help if you can tell us if you’ve done either of those things as well.

@iandol
Copy link
Author

@iandol iandol commented Feb 17, 2014

@ylluminate:If you switch from developer previews to prerelease candidates in prefs → extras then you won't auto-update to 4009; that is my fix to keep a working QS on my broken installs.

@skurfer: 4009 works fine on some of my machines not on others, I have working spotlight and no redirected root home folders on any of those machines. I think I do have a redirected (linked) music folder within my home folder on one of the non-working 4009s -- I'll try disabling iTunes plugin and/or that link and see if it makes a difference...

here is the xml from ~/Library/Caches/Quicksilver/Indexes/QSPresetMainApplications.qsindex for textmate in a working 4009 (my macbook pro running 10.9.1), quite different to my non-working 4009 and working 4008:

    <dict>
        <key>class</key>
        <string>QSObject</string>
        <key>data</key>
        <dict>
            <key>public.data</key>
            <string>/Applications/TextMate.app</string>
            <key>qs.process</key>
            <dict>
                <key>Attributes</key>
                <integer>4096</integer>
                <key>BundlePath</key>
                <string>/Applications/TextMate.app</string>
                <key>CFBundleExecutable</key>
                <string>/Applications/TextMate.app/Contents/MacOS/TextMate</string>
                <key>CFBundleIdentifier</key>
                <string>com.macromates.TextMate.preview</string>
                <key>CFBundleName</key>
                <string>TextMate</string>
                <key>CFBundleVersion</key>
                <integer>0</integer>
                <key>FileCreator</key>
                <string>avin</string>
                <key>FileType</key>
                <string>APPL</string>
                <key>Flavor</key>
                <integer>3</integer>
                <key>IsCheckedInAttr</key>
                <true/>
                <key>IsHiddenAttr</key>
                <false/>
                <key>LSBackgroundOnly</key>
                <false/>
                <key>LSCheckInTime*</key>
                <date>2014-02-17T07:42:03Z</date>
                <key>LSLaunchTime</key>
                <date>2014-02-17T07:42:03Z</date>
                <key>LSSystemWillDisplayDeathNotification</key>
                <false/>
                <key>LSUIElement</key>
                <false/>
                <key>LSUIPresentationMode</key>
                <integer>0</integer>
                <key>NSApplicationBundleIdentifier</key>
                <string>com.macromates.TextMate.preview</string>
                <key>NSApplicationName</key>
                <string>TextMate</string>
                <key>NSApplicationPath</key>
                <string>/Applications/TextMate.app</string>
                <key>NSApplicationProcessIdentifier</key>
                <integer>75757</integer>
                <key>NSApplicationProcessSerialNumberHigh</key>
                <integer>0</integer>
                <key>NSApplicationProcessSerialNumberLow</key>
                <integer>7309048</integer>
                <key>PSN</key>
                <integer>7309048</integer>
                <key>ParentPSN</key>
                <integer>7304951</integer>
                <key>pid</key>
                <integer>75757</integer>
            </dict>
        </dict>
        <key>properties</key>
        <dict>
            <key>QSObjectName</key>
            <string>TextMate.app</string>
            <key>QSObjectObjectID</key>
            <string>/Applications/TextMate.app</string>
            <key>QSObjectType</key>
            <string>public.data</string>
        </dict>
    </dict>

@iandol
Copy link
Author

@iandol iandol commented Feb 17, 2014

Here is what console tells me on my broken 4009 machine, nothing very relevant:

17/02/2014 09:41:33.020 Quicksilver[40821]: .scriptSuite warning for result type of command 'GetDirectTypes' in suite 'QuicksilverHandlers': 'list' is not a valid type name.
17/02/2014 09:41:33.020 Quicksilver[40821]: .scriptSuite warning for result type of command 'GetIndirectTypes' in suite 'QuicksilverHandlers': 'list' is not a valid type name.
17/02/2014 09:41:33.098 Quicksilver[40821]: Cannot find executable for CFBundle 0x7fc0b4821bf0 </Users/ian/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSExtraScriptsPlugIn.92.qsplugin> (not loaded)

Disabling iTunes plugin doesn't fix it, neither does deleting my symlinked music folder from ~/ -- looking in my cache the xml from my broken 4009 install is now similar to my working 4009 install:

    <dict>
        <key>class</key>
        <string>QSObject</string>
        <key>data</key>
        <dict>
            <key>public.data</key>
            <string>/Applications/TextMate.app</string>
            <key>qs.process</key>
            <dict>
                <key>Attributes</key>
                <integer>4096</integer>
                <key>BundlePath</key>
                <string>/Applications/TextMate.app</string>
                <key>CFBundleExecutable</key>
                <string>/Applications/TextMate.app/Contents/MacOS/TextMate</string>
                <key>CFBundleIdentifier</key>
                <string>com.macromates.TextMate.preview</string>
                <key>CFBundleName</key>
                <string>TextMate</string>
                <key>CFBundleVersion</key>
                <integer>0</integer>
                <key>FileCreator</key>
                <string>avin</string>
                <key>FileType</key>
                <string>APPL</string>
                <key>Flavor</key>
                <integer>3</integer>
                <key>IsCheckedInAttr</key>
                <true/>
                <key>IsHiddenAttr</key>
                <false/>
                <key>LSBackgroundOnly</key>
                <false/>
                <key>LSCheckInTime*</key>
                <date>2014-02-14T10:00:53Z</date>
                <key>LSLaunchTime</key>
                <date>2014-02-14T10:00:53Z</date>
                <key>LSSystemWillDisplayDeathNotification</key>
                <false/>
                <key>LSUIElement</key>
                <false/>
                <key>LSUIPresentationMode</key>
                <integer>0</integer>
                <key>NSApplicationBundleIdentifier</key>
                <string>com.macromates.TextMate.preview</string>
                <key>NSApplicationName</key>
                <string>TextMate</string>
                <key>NSApplicationPath</key>
                <string>/Applications/TextMate.app</string>
                <key>NSApplicationProcessIdentifier</key>
                <integer>34620</integer>
                <key>NSApplicationProcessSerialNumberHigh</key>
                <integer>0</integer>
                <key>NSApplicationProcessSerialNumberLow</key>
                <integer>20063009</integer>
                <key>PSN</key>
                <integer>20063009</integer>
                <key>pid</key>
                <integer>34620</integer>
            </dict>
        </dict>
        <key>properties</key>
        <dict>
            <key>QSObjectName</key>
            <string>TextMate.app</string>
            <key>QSObjectObjectID</key>
            <string>/Applications/TextMate.app</string>
            <key>QSObjectType</key>
            <string>public.data</string>
        </dict>
    </dict>

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 17, 2014

The difference in the cache entries can be explained by whether or not TextMate is running during indexing. It doesn’t help, I’m afraid.

The .scriptSuite warning is actually somewhat interesting. That should have been squashed in 4008. AppleScript and Launch Services can get confused when you have multiple copies of Quicksilver laying around. Do you have any old copies? (If so, zip them or move them to a DMG and unmount it.) Is it possible that one of them could even be running?

@ylluminate
Copy link

@ylluminate ylluminate commented Feb 17, 2014

Thanks @iandol good call for right now since I don't have the time to dig into this issue much. I'll change this on all my machines. I am curious, off the top (vs digging into the files myself), do you know which config / pref files I should delete that would have been altered by the last couple updates? When I step back my apps no longer will start as it is showing the question mark icon for them all vs the actual app icons.

@iandol
Copy link
Author

@iandol iandol commented Feb 17, 2014

@skurfer: Not unless a version in Trash could cause this (I did a "system files included" spotlight search)? I do sometimes mount a disk image clone of a / system drive that could cause a second QS app but I don't think that was the case today when I reported the console output. I'm not at my broken 4009 machine but I'm pretty sure only one instance was running. I also see the .scriptSuite warning on my working 4009, where I'm definite there are no other copies available or running:

17/02/2014 20:23:27.441 Quicksilver[82607]: .scriptSuite warning for result type of command 'GetDirectTypes' in suite 'QuicksilverHandlers': 'list' is not a valid type name.
17/02/2014 20:23:27.441 Quicksilver[82607]: .scriptSuite warning for result type of command 'GetIndirectTypes' in suite 'QuicksilverHandlers': 'list' is not a valid type name.
17/02/2014 20:23:27.513 Quicksilver[82607]: Cannot find executable for CFBundle 0x7fa5cc82c550 </Users/ian/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSExtraScriptsPlugIn.92.qsplugin> (not loaded)

@ylluminate: Yes, to go back to 4008 you currently need to delete your cache to get it working:

http://qsapp.com/wiki/FAQ#How_do_I_clear_Quicksilver.27s_cache.3F

@ylluminate
Copy link

@ylluminate ylluminate commented Feb 17, 2014

@iandol thanks, I had hoped it would just be a matter of rm -fr'ing those.

@skurfer skurfer added this to the 1.2.0 milestone Feb 17, 2014
@skurfer
Copy link
Member

@skurfer skurfer commented Feb 18, 2014

OK, try this test build. http://cl.ly/0P1w0c2a1m3G

It should be identical to 4009, with a couple of logging statements added where I suspect the problem might be. If you check the console, you should see messages like “paths for…” and “actions for…” for every file you select in the first pane.

So select TextMate (or something else known to be broken) and share the output.

I should have asked, but do the correct actions seem to be there for other items or for non-application files?

@iandol
Copy link
Author

@iandol iandol commented Feb 18, 2014

Almost everything I select is broken in 4009, so for example selecting Folders (no move/reveal etc only the "Make New" action is available), files (no actions available at all) or apps (only Open File available). Contacts show only contacts related actions from the plugin OK, as do playlists for only iTunes actions, but for example openmeta tags don't show any actions.

Interestingly no logging information shows up in console.app (system log queries > All Messages) when I select textmate, or switch between textmate, textedit and sublime text in the first pane. Neither do I get any logging when tabbing to the second pane. All 3 apps are equally "broken" in the actions performable.

For some reason other apps/entries trigger logging, so for example selecting between Scrivener and Screen Sharing (which is an alias in /Applications that points to /System/Library/CoreServices/Screen Sharing.app) and a contact in the first pane: https://gist.github.com/iandol/9074471#file-scrivener-screensharing-contact -- the Screen Sharing alias shows no actions at all.

I also see console output going between an openmeta tag and a file and a PDF: https://gist.github.com/iandol/9074471#file-openmeta-file-pdf

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 18, 2014

That’s interesting. The messages you’re seeing aren’t the ones I added, but they are coming from the place I was going to check next. Were they not there before? Doesn’t matter, really…

Here’s another build with more logging right before the “unable to find actions for…” part.

http://cl.ly/2t2a3j1Z2Z3l

Select some things and share the console output.

@iandol
Copy link
Author

@iandol iandol commented Feb 18, 2014

Will have to wait till I get to work tomorrow, that's the machine with the broken 4009...

@iandol
Copy link
Author

@iandol iandol commented Feb 19, 2014

Here's the new build selecting textmate:

https://gist.github.com/iandol/9074471#file-a-newer-build-selecting-textmate-in-first-pane

If I try to disable the terminal plugin and restart QS then I only see 19/02/2014 09:40:49.125 Quicksilver[66025]: initial action count for TextMate.app: 3 without the other errors but QS 4009 is still not populating the actions. It also says initial action count == 3 but only shows 1 in the second pane...

@iandol
Copy link
Author

@iandol iandol commented Feb 19, 2014

I've also tried removing all plugins and restarting but still not working, I see a new console error but I assume it's unrelated:

19/02/2014 09:46:41.531 Quicksilver[66066]: initial action count for TextMate.app: 2
19/02/2014 09:46:41.541 Quicksilver[66066]: Warning: NSBundle NSBundle </System/Library/CoreServices/CoreTypes.bundle> (not yet loaded) was released too many times. For compatibility, it will not be deallocated, but this may change in the future. Set a breakpoint on __NSBundleOverreleased() to debug

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 19, 2014

initial action count for TextMate.app: 2

This is 153 for me. Even with only the built-in plug-ins enabled, it’s 42. We’re getting closer. Here’s another build that should be nice and noisy. I prefixed all the new messages with “i1777” this time, so just search for that in the Console to get the messages we care about.

http://cl.ly/2c2p3v0t2Y3Z

I don’t know if it will give us the answer, but it will tell me where to look next. (I don’t suppose you know how to build QS in Xcode? 😉)

@iandol
Copy link
Author

@iandol iandol commented Feb 19, 2014

https://gist.github.com/iandol/9074471#file-even-more-logging-selecting-textmate

I did used to build my own QS back in the dark ol' days when QS was semi-abandoned, but there has been no point since you lovely chaps started regular development. I'm not an XCode or obj-c developer (I'm forced to install XCode because of a Matlab dependancy), but I suspect building is much easier now than it used to be...

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 19, 2014

OK, it looks like you’re missing actions that apply to all file types as well as actions that apply to all items, but I suspect the problems have the same cause, so I’m only going to look at files.

Once again…

http://cl.ly/3Y252U2N0e03

This build should log a bunch of stuff as it loads and discovers actions, but you should also call up QS and select TextMate. I assume it will have to wait until tomorrow.

@iandol
Copy link
Author

@iandol iandol commented Feb 20, 2014

Running QS and selecting Textmate:

https://gist.github.com/iandol/9074471#file-verbosity-to-the-max

Note I seem to have 3 actions now for Textmate: Open file... Quit & relaunch

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 20, 2014

OK, now we’re getting down to it. See all those actions it adds for the type *? But then when listing types it knows about, * is missing. This build looks at the creation of that entry in the dictionary.

http://cl.ly/2N0W442k303t

No need to do anything in the UI this time. All of the interesting stuff should be logged when Quicksilver launches.

@iandol
Copy link
Author

@iandol iandol commented Feb 21, 2014

https://gist.github.com/iandol/9074471#file-asterisktastic

It seems to love multimarkdown (I think it's pretty spiffy too!); and claims to add 30 actions for *...

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 21, 2014

It seems to love multimarkdown

Maybe a little too much… The file UTI should remain *, but it’s getting converted to net.multimarkdown.text, so all the actions think they support that instead of * or “all file types”.

I suspect some application has defined that type and it’s confusing the UTI system. So the next question: Is that application doing something wrong, or are we?

If you can tell me which application(s) might be involved, I might be able to download them and see what’s going on. You could also try temporarily zipping or trashing those apps to see if Quicksilver starts working. (I suspect it will.)

@iandol
Copy link
Author

@iandol iandol commented Feb 21, 2014

Bingo!!! I had an older V1 of Multimarkdown Composer (by Fletcher Penny, same dev as multimarkdown itself) installed. I updated it to V2 and QS is now working. V1 isn't available any more so this isn't going to be a problem for most users. I realise I overwrote it so don't have the V1 app package available if you wanted to try and debug further, sorry!

If @ylluminate could check if he has MMC V1 installed and confirm this? If not then he could install the last test build and see what other dastardly UTI hijacker may be culpable.

Thanks for the sleuthing Rob! :squirrel: 🚔

@iandol
Copy link
Author

@iandol iandol commented Feb 21, 2014

EDIT: just confirmed on another computer with a broken 4009 it also had V1 of MMC installed. I have that app package if anything would be helpful to use.

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 22, 2014

I’d like to see it, or at least its Info.plist. Maybe the whole thing. I just want to make sure whatever it was doing was “wrong” and not likely to be repeated in other apps.

@iandol
Copy link
Author

@iandol iandol commented Feb 22, 2014

Here it is: https://db.tt/06KIxXuQ

The extracted info.plist: https://gist.github.com/iandol/9074471#file-info-plist

@DHowett
Copy link

@DHowett DHowett commented Feb 22, 2014

I have the same issue with net.synalysis.reference.
The Info.plist from SynalizeIt!: https://ghostbin.com/paste/j5cun#L229
The link points to the line I presume to be the culprit. :P

@skurfer
Copy link
Member

@skurfer skurfer commented Feb 23, 2014

I don’t know this area very well, but I’ve looked at the property lists and some documentation. I think what these apps are trying to say is “allow any file to be treated as [type X]”, when what they really said was “allow any file with the extension * to be treated as [type X]”. Since you’ll (hopefully) never see a file named name.*, this declaration was useless …but also mostly harmless.

But since we have this new function that attempts to turn anything into a UTI, it was treating * as a file extension and getting back the UTI declared by these apps. So while these apps shouldn’t be doing what they do (and one of them no longer does, it seems), we shouldn’t bother trying to look up a UTI for *, so I’ve added a special case for that. The fix should be in the next dev preview.

If you can’t wait, and you’re inclined, check out the release branch, then merge the moretypes branch into it and build. That should give you a working version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants