Solving Mac freezes due to ocspd crashes
A public service announcement for anyone experiencing the same problem and who may google for a solution.
A couple of days ago my work iMac started experiencing intermittent freezing, and very slow searches in Mail.app. Rebuilding my Spotlight index overnight using sudo mdutil -Eav did not help. I started suspecting problems with recent versions of Chrome, or iTunes 10.5 Beta 7, but quitting those apps did not help either.
After running the Console.app, I noticed the following messages in my logs:
2011-09-14 17:39:20 com.apple.launchd[1] (com.apple.ocspd[3197]) Job appears to have crashed: Bus error
2011-09-14 17:39:21 com.apple.ReportCrash.Root[3201] 2011-09-14 17:39:21.325 ReportCrash[3201:2903] Saved crash report for ocspd[3197] version ??? (???) to /Library/Logs/DiagnosticReports/ocspd_2011-09-14-173921_localhost.crash
2011-09-14 17:50:29 com.apple.launchd[1] (com.apple.ocspd[3269]) Job appears to have crashed: Bus error
2011-09-14 17:50:29 com.apple.ReportCrash.Root[3270] 2011-09-14 17:50:29.964 ReportCrash[3270:2903] Saved crash report for ocspd[3269] version ??? (???) to /Library/Logs/DiagnosticReports/ocspd_2011-09-14-175029_localhost.crash
2011-09-14 17:50:45 com.apple.launchd[1] (com.apple.ocspd[3271]) Job appears to have crashed: Bus error
2011-09-14 17:50:45 com.apple.ReportCrash.Root[3270] 2011-09-14 17:50:45.117 ReportCrash[3270:2807] Saved crash report for ocspd[3271] version ??? (???) to /Library/Logs/DiagnosticReports/ocspd_2011-09-14-175045_localhost.crash
Looking at those crash dumps did not yield very useful information, just some blather like this:
Process: ocspd [3197]
Path: /usr/sbin/ocspd
Identifier: ocspd
Version: ??? (???)
Code Type: X86-64 (Native)
Parent Process: launchd [1]
Date/Time: 2011-09-14 17:39:19.339 -0700
OS Version: Mac OS X 10.6.8 (10K549)
Report Version: 6
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: 0x000000000000000a, 0x000000010009b210
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 com.apple.security 0x00007fff87b59d0b Security::ReadSection::at(unsigned int) const + 25
1 com.apple.security 0x00007fff87b59172 Security::DbVersion::open() + 62
2 com.apple.security 0x00007fff87b58cc1 Security::DbVersion::DbVersion(Security::AppleDatabase const&, Security::RefPointer const&) + 179
3 com.apple.security 0x00007fff87b587ce Security::DbModifier::getDbVersion(bool) + 330
4 com.apple.security 0x00007fff87b58675 Security::DbModifier::openDatabase() + 33
5 com.apple.security 0x00007fff87b582b9 Security::Database::_dbOpen(Security::DatabaseSession&, unsigned int, Security::AccessCredentials const*, void const*) + 221
6 com.apple.security 0x00007fff87b576c1 Security::DatabaseManager::dbOpen(Security::DatabaseSession&, Security::DbName const&, unsigned int, Security::AccessCredentials const*, void const*) + 77
7 com.apple.security 0x00007fff87b575a3 Security::DatabaseSession::DbOpen(char const*, cssm_net_address const*, unsigned int, Security::AccessCredentials const*, void const*, long&) + 285
8 com.apple.security 0x00007fff87b6b294 cssm_DbOpen(long, char const*, cssm_net_address const*, unsigned int, cssm_access_credentials const*, void const*, long*) + 108
9 com.apple.security 0x00007fff87b6ae3a CSSM_DL_DbOpen + 106
10 ocspd 0x0000000100006ad9 0x100000000 + 27353
11 ocspd 0x0000000100006cab 0x100000000 + 27819
12 ocspd 0x0000000100001f68 0x100000000 + 8040
13 ocspd 0x00000001000176ed 0x100000000 + 95981
14 ocspd 0x000000010001787b 0x100000000 + 96379
15 ocspd 0x0000000100017e4f 0x100000000 + 97871
16 ocspd 0x0000000100004613 0x100000000 + 17939
17 ocspd 0x0000000100001d48 0x100000000 + 7496
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x000000010008e000 rbx: 0x000000010008e000 rcx: 0x00007fff88f0d47a rdx: 0x000000000000d210
rdi: 0x0000000100115478 rsi: 0x000000000000d210 rbp: 0x00007fff5fbfe850 rsp: 0x00007fff5fbfe850
r8: 0x0000000000000003 r9: 0x0000000000000000 r10: 0x00007fff88f0597a r11: 0x0000000000000206
r12: 0x0000000100115478 r13: 0x00007fff5fbfecd0 r14: 0x00007fff5fbfecd0 r15: 0x00007fff5fbfed20
rip: 0x00007fff87b59d0b rfl: 0x0000000000010297 cr2: 0x000000010009b210
Binary Images:
0x100000000 - 0x10003cfef +ocspd ??? (???) /usr/sbin/ocspd
0x7fff5fc00000 - 0x7fff5fc3bdef dyld 132.1 (???) /usr/lib/dyld
0x7fff80853000 - 0x7fff80859ff7 com.apple.DiskArbitration 2.3 (2.3) /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x7fff80baa000 - 0x7fff80c27fef libstdc++.6.dylib 7.9.0 (compatibility 7.0.0) /usr/lib/libstdc++.6.dylib
0x7fff811af000 - 0x7fff81268fff libsqlite3.dylib 9.6.0 (compatibility 9.0.0) /usr/lib/libsqlite3.dylib
0x7fff812e9000 - 0x7fff8161dfef com.apple.CoreServices.CarbonCore 861.39 (861.39) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x7fff82092000 - 0x7fff82122fff com.apple.SearchKit 1.3.0 (1.3.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x7fff8229d000 - 0x7fff822c8ff7 libxslt.1.dylib 3.24.0 (compatibility 3.0.0) /usr/lib/libxslt.1.dylib
0x7fff82695000 - 0x7fff826d2fff com.apple.LDAPFramework 2.0 (120.1) /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP
0x7fff82954000 - 0x7fff82966fe7 libsasl2.2.dylib 3.15.0 (compatibility 3.0.0) /usr/lib/libsasl2.2.dylib
0x7fff82ae1000 - 0x7fff82b81fff com.apple.LaunchServices 362.3 (362.3) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x7fff82c8f000 - 0x7fff82c9dff7 libkxld.dylib ??? (???) /usr/lib/system/libkxld.dylib
0x7fff82d0e000 - 0x7fff82dc4ff7 libobjc.A.dylib 227.0.0 (compatibility 1.0.0) /usr/lib/libobjc.A.dylib
0x7fff82dc5000 - 0x7fff82de6fff libresolv.9.dylib 41.0.0 (compatibility 1.0.0) /usr/lib/libresolv.9.dylib
0x7fff8349e000 - 0x7fff834adfff com.apple.NetFS 3.2.2 (3.2.2) /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
0x7fff83a2b000 - 0x7fff83a41fef libbsm.0.dylib ??? (???) /usr/lib/libbsm.0.dylib
0x7fff83a42000 - 0x7fff83bb9fe7 com.apple.CoreFoundation 6.6.5 (550.43) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x7fff83bbe000 - 0x7fff83c92fe7 com.apple.CFNetwork 454.12.4 (454.12.4) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x7fff83c93000 - 0x7fff83cbbfff com.apple.DictionaryServices 1.1.2 (1.1.2) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
0x7fff84905000 - 0x7fff849c2fff com.apple.CoreServices.OSServices 359.2 (359.2) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x7fff849d8000 - 0x7fff84a38fe7 com.apple.framework.IOKit 2.0 (???) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x7fff850ef000 - 0x7fff8513bfff libauto.dylib ??? (???) /usr/lib/libauto.dylib
0x7fff851a2000 - 0x7fff851ddfff com.apple.AE 496.5 (496.5) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x7fff8525f000 - 0x7fff85270ff7 libz.1.dylib 1.2.3 (compatibility 1.0.0) /usr/lib/libz.1.dylib
0x7fff85b42000 - 0x7fff85b43ff7 com.apple.TrustEvaluationAgent 1.1 (1) /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
0x7fff87921000 - 0x7fff8796bff7 com.apple.Metadata 10.6.3 (507.15) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x7fff87b2b000 - 0x7fff87db4ff7 com.apple.security 6.1.2 (55002) /System/Library/Frameworks/Security.framework/Versions/A/Security
0x7fff88b46000 - 0x7fff88b4aff7 libmathCommon.A.dylib 315.0.0 (compatibility 1.0.0) /usr/lib/system/libmathCommon.A.dylib
0x7fff88f02000 - 0x7fff890c3fef libSystem.B.dylib 125.2.11 (compatibility 1.0.0) /usr/lib/libSystem.B.dylib
0x7fff8921b000 - 0x7fff8933afe7 libcrypto.0.9.8.dylib 0.9.8 (compatibility 0.9.8) /usr/lib/libcrypto.0.9.8.dylib
0x7fff8933b000 - 0x7fff89378ff7 libssl.0.9.8.dylib 0.9.8 (compatibility 0.9.8) /usr/lib/libssl.0.9.8.dylib
0x7fff89494000 - 0x7fff894d5fff com.apple.SystemConfiguration 1.10.8 (1.10.2) /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x7fff8953e000 - 0x7fff896fcfff libicucore.A.dylib 40.0.0 (compatibility 1.0.0) /usr/lib/libicucore.A.dylib
0x7fff89b66000 - 0x7fff89b66ff7 com.apple.CoreServices 44 (44) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x7fff8a545000 - 0x7fff8a65cfef libxml2.2.dylib 10.3.0 (compatibility 10.0.0) /usr/lib/libxml2.2.dylib
0x7fffffe00000 - 0x7fffffe01fff libSystem.B.dylib ??? (???) /usr/lib/libSystem.B.dylib
Some of the information you get when googling for the error message is misleading, suggesting ocspd is somehow tied to nVidia graphics drivers. It is in fact the system daemon that handles verification and revocation of SSL certificates using the Online Certificate Status Protocol (OCSP), a vital component of the Internet’s security architecture, as evidenced by the recent Diginotar fiasco. Thus presumably it is used throughout Internet apps like Mail.app or Chrome, and the regular crashes (at 3 minute intervals or so) would also freeze any apps that make use of cryptography.
The solution was to delete the the temporary certificate revocation list (CRL) databases ocspd maintains:
sudo rm -rf /private/var/db/crls/*
sudo rm -rf /private/var/db/crls/.fl*
A corrupted database is probably responsible for the repeated crashes I observed, and clearing those solved my problem. You may want to make backups of those files instead of just deleting them.
As usual, I disclaim responsibility for any harm this procedure may do to your computer, or induce it to eat your dog, who ate your homework.
So much for the theory that the Mac “just works”. To paraphrase Churchill, it is the worst operating system, with the exception of all others…
Update (2014-04-30):
Well, at least OCSP works on the Mac. You can test it by trying https://revoked.grc.com/. Google Chrome also rejects this, but being Google, they don’t use the standard and implemented their own seriously flawed CRL distribution mechanism (they manually blacklisted the GRC test site, for instance). Safari on iOS does not block the site at all (a StackOverflow thread suggests verification is only performed for EV certificates, which is are used in only a tiny minority of SSL/TLS sites).