Mac OS X loads services from various locations. Knowing what they are could save you a lot of trouble. I was just about to reinstall again my freshly reinstalled MacBook because I didn’t know those locations.
An obscure OS X feature (or more likely a bug) stroke me a few hours ago. All of a sudden my Safari started throwing Couldn’t connect to Spell Check service alerts after every keystroke in any text field. I Goggled a lot, read tons of articles, deleted some files, repaired permissions with Disk Utility and rebooted several times but with no effect at all.
First I looked for my ~/Library/Services folder but I didn’t have one. Then looked in /System/Library/Services and found the service called AppleSpell.service. I checked the permissions of the executable file inside and they were OK. Running the executable by hand didn’t help — the message still popped up in Safari. Then I looked at Console’s output just to find the following messages inside:
Aug 3 23:39:04 home com.apple.launchd ([0x0-0x14014].net.leuski.cocoAspell.Service): Exited abnormally: Trace/BPT trap Aug 3 23:45:49 home [0x0-0x1b01b].net.leuski.cocoAspell.Service: dyld: Library not loaded: /usr/local/lib/libaspell.15.dylib Aug 3 23:45:49 home [0x0-0x1b01b].net.leuski.cocoAspell.Service: Referenced from: /Volumes/Time Machine/Library/Services/cocoAspell.service/Contents/MacOS/cocoAspell Aug 3 23:45:49 home [0x0-0x1b01b].net.leuski.cocoAspell.Service: Reason: image not found Aug 3 23:45:49 home ReportCrash: Formulating crash report for process cocoAspell
It turned out that the sole reason for this misbehaviour was that Mac OS X was loading the cocoAspell.service from my external backup hard drive where I had put my home directory’s contents some hours ago and it was trying to dynlink to a library file that was wiped out after I reinstalled the OS earlier that day. Removing the cocaAspell.service bundle from the Library/Services folder on my backup drive and logging off and on again solved the problem.
Positional independence of the executable bundles is one of my favourite OS X features, but this time it has gone too far. Isn’t autoloading suspicious services from external devices a little bit counter security?