几个小时前,我的 MacBook Air(搭载 OS X Yosemite 10.10.2)上的 Chrome 关闭了,而且无法恢复。每次我尝试启动它时,它都会退出并显示“Google Chrome 意外退出”消息,让我选择向 Apple 发送报告、忽略或重新启动 Chrome。之后也会出现同样的情况。
我尝试使用“--safe-plugins”选项启动 Chrome 安全会话,但没有成功,以下是我从终端执行此操作时发生的情况:
Mac-705681ad12c1-2:MacOS javipas$ ./Google\ Chrome --safe-plugins
2014-11-26 18:02:09.266 Google Chrome[921:21325] -[NSTouch _initWithPreviousTouch:newPhase:position:isResting:]: unrecognized selector sent to instance 0x7fb71afabcc0
[921:1299:1126/180209:FATAL:chrome_browser_application_mac.mm(148)] Someone is trying to raise an exception! NSInvalidArgumentException reason -[NSTouch _initWithPreviousTouch:newPhase:position:isResting:]: unrecognized selector sent to instance 0x7fb71afabcc0
Trace/BPT trap: 5
Mac-705681ad12c1-2:MacOS javipas$
我也尝试过从 Apps 文件夹中删除 Chrome 并重新安装,但也没有成功。有什么想法吗?
答案1
只是猜测:
这可能是 Chrome 中的用户配置文件的问题。我知道我以前在 Windows PC 上遇到过这个问题。这是有道理的,因为在 Mac 上卸载并重新安装该应用程序不会删除这些用户文件。
它们可能已被损坏或损毁。
导航:
~/Library/Application Support/Google/Chrome/
将文件夹重命名Default
为类似名称Default-Backup
,然后重新启动 Chrome。它应该会生成一个新的默认配置文件,希望您的问题能够得到解决。
但这样做会导致数据丢失。如果您担心丢失任何数据,请在开始此过程之前打开 Chrome 同步。
我想,如果修复有效,您可以从备份目录中“挑选”文件和文件夹,直到再次出现问题,以缩小可能导致崩溃的根本原因的文件范围。
编辑:
问题:
从关注程度来看铬问题在过去几天里,你所描述的问题似乎是由Mac 触摸板驱动程序存在问题。
但这是一个奇怪的错误,因为它显然不会影响所有人,即使是使用最新版本的 Mac OS X(10.10.2)的人。但根据这,问题源于苹果贬值的选择isResting
器,然后在最近的更新中将其完全删除。
再次,人们报告的错误如下所示:
[NSTouch _initWithPreviousTouch:newPhase:position:isResting:]: unrecognized selector sent to instance
解决方案:
看起来有些人只是插入外接鼠标,如果他们不触摸触控板,那就没问题了。如果这听起来是个好的解决方案,请确保在辅助功能设置中启用“使用鼠标时忽略触控板”。
如果前一个选项听起来很麻烦,您可以尝试降级 Chrome。不确定这是否可行,但这可能是一个不错的尝试。
我猜想在未来几天内会向 Canary 版本推送补丁,或者 Apple 会发送新的驱动程序更新(但可能不会,因为他们正在努力移除isResting
)。我会继续关注此事。
答案2
Pippyn 的答案中的选项 2 有效,因此给出了完整的临时修复(我不能只赞成该答案):
[1] 将以下内容放入文件“patch.m”中:
#import <AppKit/AppKit.h>
__attribute((constructor)) void Patch_10_10_2_entry()
{
NSLog(@"10.10.2 patch loaded");
}
@interface NSTouch ()
- (id)_initWithPreviousTouch:(NSTouch *)touch newPhase:(NSTouchPhase)phase position:(CGPoint)position isResting:(BOOL)isResting force:(double)force;
@end
@implementation NSTouch (Patch_10_10_2)
- (id)_initWithPreviousTouch:(NSTouch *)touch newPhase:(NSTouchPhase)phase position:(CGPoint)position isResting:(BOOL)isResting
{
return [self _initWithPreviousTouch:touch newPhase:phase position:position isResting:isResting force:0];
}
@end
编译它:
clang -dynamiclib -framework AppKit patch.m -o patch.dylib
用它:
env DYLD_INSERT_LIBRARIES=/path/to/patch.dylib "/path/to/Google Chrome.app/Contents/MacOS/Google Chrome"
第 2 部分 Automator
在 Automator 中选择运行 Shell 脚本,粘贴上述命令并将其作为应用程序保存到桌面
答案3
这是 OSX 10.10.2 中新触控板驱动程序的问题。
选项 1:您可以使用外接鼠标,并在连接 USB 鼠标时禁用触控板。(辅助功能 > 鼠标和触控板 > 当存在鼠标或无线触控板时忽略内置触控板)
选项 2:(可在Reddit) 此修复不是最佳解决方案,但它确实有效。按照说明操作时,每次要运行 Chrome 时都必须运行最后一个终端命令。但您也可以使用自动程序应用程序和终端命令制作 Chrome 启动器。
答案4
该问题已于 2014 年 12 月 20 日在 OS X Yosemite 上得到修复。我不确定 Apple 何时发布了 OS X 的新版本,但目前我可以使用正常方法打开 Google Chrome 并移动鼠标而不会崩溃。
如果您在启动 Chrome 时移动鼠标,上面列出的先前补丁将导致程序崩溃。