Google Chromeが「Mac OS X 10.10.2 beta」でクラッシュしまくる原因と解決法法

Command

Google Chrome 39がMac OS X 10.10.2 Betaでクラッシュする現象が問題になっているようで、その原因と解決方法が9to5Macで公開されています。

同記事によるとChromeがクラッシュする原因は、10.10.2 でTrackpad APIが変更になったため。Chromeが以前の古いAPIを呼んでいるためラッシュが発生しているようです。

解決策

クラッシュ問題の解決策として、古いAPIを追加し新しいAPIコールに変換して呼び出すパッチ(dynlib)を作成する法法が紹介されていました。その方法は以下の通り。

patch.mの保存

次の内容のファイルをpatch.mとしてデスクトップに保存します。

#import 

__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

ターミナルでコマンド実行

patch.mをコンパイルして、patch.dylibを作成さします。

clang -dynamiclib -framework AppKit ~/Desktop/patch.m -o ~/Desktop/patch.dylib

Chromeを実行

環境変数を指定してpatch.dylibを指定した後にChromeを実行します。

env DYLD_INSERT_LIBRARIES=~/Desktop/patch.dylib "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

※都度ターミナルからこのコマンドを使ってChromeを立ち上げることを想定しているようですね。

まとめ

そのうちChromeも新APIに対応すると思われますが、それまで待て無い方は試してみると良いかもしれません。以上の手順を簡単に実行するためのAutomatorも存在しているようです。実際にコードが有効化どうか確認していませんので、「at your own risk」でお願いします。

スポンサーリンク