Fix for El Capitan stuck at login
Last month I updated to 10.11.1 and my system would no longer log in. I would enter my password correctly and then the cursor would change to the spinning pinwheel and just sit there forever. The only way out was a power off reboot. I later found that when it was in this state I could SSH into it from another machine, and the system log revealed that /usr/libexec/lsd (the Launch Services Daemon) was crashing repeatedly. I searched these forums and others and found lots of ideas, none of which helped.
No problem, though, I've got hourly time machine backups, right? Well, no. Apparently El Capitan had not been doing the hourly backups so my most recent backup was from sometime in October, which was a month old at the time. Not good.
Fortunately, I had an older boot drive that I put in an external enclosure and was able to boot from that to experiment. The drive I normally boot from was fine -- permission checks and disk repair and all that all came back good, and I could read and write files to it just fine.
After lots of experimentation and frustration I was just about to give up and add another drive to do a clean install and start moving everything over -- a process that I *really* hate doing. But one last web search and a bit of luck gave my one last shot at fixing it.
To do this, you'll either need to be in a recovery console, or ssh into the machine, or boot from an external drive, or otherwise somehow get to a command prompt. Once you are there, do this:
find /private/var/folders/ | grep com.apple.LaunchServices | grep csstore
Note that if you boot from an external drive, you need to run that command against the boot drive you are trying to fix. Just add the /Volumes/Whatever_Your_Boot_Drive_is to the path, like so:
find /Volumes/YourBootDriveHere/private/var/folders/ | grep com.apple.LaunchServices | grep csstore
That will find the cache databases that Launch Services is using. They will have long and random-looking names that end in csstor. Make a note of every file shown, then delete them, by a command like this (obviously using whatever paths the above command found instead of this example):
rm /private/var/folders/cd/someLongRandomNameHere/someFolderNumberHere/com.apple.L aunchService-whatever.csstore
If you're more cautious, you can rename them instead of deleting them, so you can put them back if necessary. That would look like this:
mv /full/path/like/shown/above/to/whatever.cssstore /full/path/like/shown/above/to/whatever.csstore.backup
After removing or renaming those files, restart your Mac. You should now be able to log in. Or at least, that's what finally worked for me. The login did take longer than normal -- a few minutes -- to rebuild those files, but the desktop finally appeared, and now I'm back to running on my normal boot drive.
Hopefully this helps someone.
Mac Pro, OS X El Capitan (10.11.2)