如何修复 libdispatch 导致 Mac OS X 应用程序崩溃的问题?

如何修复 libdispatch 导致 Mac OS X 应用程序崩溃的问题?

在过去的一天里,我的 Mac(MacBook Air 运行 Mac OS X 10.6.2 并附带所有软件更新)开始出现很多问题。

最明显的是,iTunes 不再与我的 iPhone 同步。它失败并出现崩溃对话框报告“AppleMobileDeviceHelper 意外退出”和错误对话框“iTunes 无法从 SyncServices 加载数据类信息。请重新连接或稍后重试。”

我尝试在 support.apple.com/kb/HT1747 上进行修复,但失败了。

我也遇到了一些问题(起初看似无关),糟糕的 Cisco VPN 客户端开始给我这个错误:

Error 51: Unable to communicate with the VPN subsystem

我按照 www.anders.com/cms/192/CiscoVPN/Error.51:.Unable.to.communicate.with.the.VPN.subsystem 上的步骤操作,但是这些步骤对我来说似乎不起作用,但如果我使用带有 sudo 的命令行,我可以连接:

sudo vpnclient connect MyProfile

我查看了控制台应用程序中的诊断消息,发现一个规律,即许多应用程序都报告了“LIBDISPATCH 客户端中的错误”。受影响的程序包括:

  • AppleMobile备份
  • 苹果移动设备助手
  • Safari 网页预览获取器
  • cvpnd(Cisco VPN 守护进程)

其中,只有最后一个是非Apple软件!

诊断消息中的常见文本是:

Exception Type:  EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Crashed Thread:  1  Dispatch queue: com.apple.libdispatch-manager

Application Specific Information:
BUG IN CLIENT OF LIBDISPATCH: Do not close random Unix descriptors

我开始怀疑是否存在权限问题,或者重要库是否损坏......

我应该注意我已经重新启动了几次并验证了磁盘权限和磁盘。

任何帮助都将非常有帮助!

更多信息 2010-03-20

进一步查看日志后,我发现最早的 libdispatch 崩溃,而在此之前,coreservicesd 已经死亡:

2010-03-17 14:17:43 ... CarbonCore.framework: coreservicesd process died; attempting to reconnect but future use may result in erroneous behavior.

此后,与 coreservicesd 通信时出现了问题:

2010-03-17 14:17:45 ... LaunchServices/5123589: coreservicesd is running an unsupported version, 0 ( we are 10600000 ), so we cannot talk to it.

这导致强制重启(我忘记了这一点)并且在重启消息中我看到:

2010-03-17 14:25:24 kernel  hfs: Removed 1 orphaned / unlinked files and 0 directories 

可能没什么,但有没有什么办法可以查明这是什么?

无论如何,一切似乎都顺利加载,直到:

2010-03-17 14:26:41 Safari Webpage Preview Fetcher[134] BUG in libdispatch: 10C540 - 1931 - 0x4

我有点吃亏,因为我的 Snow Leopard 安装 CD 在办公室,而我一个星期内都不会回去...我可以根据 Leopard 安装 CD 和 Time Machine 备份尝试什么吗?

答案1

我又遇到了这个问题。这次我把主目录中的所有文件和目录都移开,然后一点一点地重新添加它们。问题似乎出在我的 .Trash、.DS_Store 或 .CFUserTextEncoding 文件中。

我没有尝试恢复 .Trash 或 .DS_Store,因为这似乎是个坏主意。

当我重新添加 .CFUserTextEncoding 时,问题再次出现。

我的 .CFUserTextEncoding 文件包含字符串39:50.39根据CFString 编码参考。我不太确定50。我使用 Gaeilge(爱尔兰盖尔语)作为我的首选界面语言。

再次删除此文件后我得到了正确的行为。

(如果在从备份中恢复大量数据之前,删除一个 5 字节文件就能解决我的问题,那就太好了!)

答案2

我找到了 Apple 故障排除指南(http://support.apple.com/kb/ht1199)来隔离问题:

  • 它没有出现在新用户帐户中
  • 恢复旧的 ~/Library/Preferences、~/Library/Caches 或 ~/Library 没有帮助

因此,我大胆尝试并从三天前的备份中恢复了我的主目录,并且成功了!

之后,我从最近的备份中恢复了我的“文档”、“桌面”、“下载”和其他目录。

不幸的是我还没有发现问题的真正原因,但至少我在没有完全重新安装的情况下解决了它。

相关内容