2014年10月16日木曜日

Xcode6でView Debuggingすると必ずkernel panicになる場合の対処法

View Debuggingを行い、3Dローテーションすると落ちる

Xcode6の新機能であるView Debuggingですが、私の環境だと必ずkernel panicが発生しOSごと落ちてしまいます。(再現率100%)

カーネルパニック時のログ(一部抜粋)
panic(cpu 0 caller 0xffffff800cedc43e): Kernel trap at 0xffffff7f8e882115, type 14=page fault, registers:
CR0: 0x000000008001003b, CR2: 0x00000000000089f4, CR3: 0x0000000022d92000, CR4: 0x0000000000000660
RAX: 0x0000000020000901, RBX: 0x00000000000000fc, RCX: 0x0000000000000000, RDX: 0xffffff80ffd92c30
RSP: 0xffffff81182cb8b0, RBP: 0xffffff81182cb8e0, RSI: 0x0000000000000000, RDI: 0x0000000000000000
R8:  0xffffff8100386000, R9:  0x0000000000010000, R10: 0x00000000000000b6, R11: 0x00000000000000b6
R12: 0xffffff80df56c000, R13: 0xffffff80df570813, R14: 0x0000000000000000, R15: 0xffffff81182cb9f8
RFL: 0x0000000000010202, RIP: 0xffffff7f8e882115, CS:  0x0000000000000008, SS:  0x0000000000000010
Fault CR2: 0x00000000000089f4, Error code: 0x0000000000000000, Fault CPU: 0x0

Backtrace (CPU 0), Frame : Return Address
0xffffff81182cb540 : 0xffffff800ce22f79
0xffffff81182cb5c0 : 0xffffff800cedc43e
0xffffff81182cb790 : 0xffffff800cef3976
0xffffff81182cb7b0 : 0xffffff7f8e882115
0xffffff81182cb8e0 : 0xffffff7f8e84efea
0xffffff81182cba60 : 0xffffff7f8e87e940
0xffffff81182cbb20 : 0xffffff7f8e84dad9
0xffffff81182cbb70 : 0xffffff800d2cf146
0xffffff81182cbb90 : 0xffffff800d2d0741
0xffffff81182cbbf0 : 0xffffff800d2ce1af
0xffffff81182cbd40 : 0xffffff800ceb6998
0xffffff81182cbe50 : 0xffffff800ce26bc1
0xffffff81182cbe80 : 0xffffff800ce139c5
0xffffff81182cbef0 : 0xffffff800ce1e013
0xffffff81182cbf70 : 0xffffff800cec9b9d
0xffffff81182cbfb0 : 0xffffff800cef4196
      Kernel Extensions in backtrace:
         com.apple.GeForceTesla(8.2.4)[B0074750-2FC6-3E26-BEA0-5AD5469686CF]@0xffffff7f8e83c000->0xffffff7f8e906fff
            dependency: com.apple.iokit.IOPCIFamily(2.9)[2852ACFE-FD28-3C37-9B39-885201BB8D25]@0xffffff7f8d4bf000
            dependency: com.apple.iokit.IONDRVSupport(2.4.1)[D41125CE-69BD-32E7-9B1D-4E83431662DD]@0xffffff7f8d8e0000
            dependency: com.apple.iokit.IOGraphicsFamily(2.4.1)[75D81741-64C1-3941-ADFA-9D6B6C434EE4]@0xffffff7f8d89d000
            dependency: com.apple.nvidia.classic.NVDAResmanTesla(8.2.4)[D61B2BB9-4289-318D-9197-5E1E13B1FF32]@0xffffff7f8d8f0000

BSD process name corresponding to current thread: Xcode
恐らくNVIDIAのGPUドライバが原因っぽいですね。
発生対象と対処

ネットで調べてもあまり同様の事象を発見出来なかったことから、あまり多くのユーザでは発生していないか、View Debuggingが使われていないかのどちらかと思います。まあ、前者でしょうか。 私のPCはMacBook Pro 15-inch, Mid 2010 で、この端末はGPUとしてIntelの統合グラフィックスとNVIDIAのGPUの2つ載っており、必要に応じて自動的に切り替えられています。 NVIDIAのGPUはGeForce GT 330Mが使用されています。 kernel panic時のログからNVIDIAのGPUドライバで落ちていることはわかっているので、Intel統合グラフィックスに固定してあげればこの問題を回避できるというわけです。 GPUの切り替えはユーティリティを利用します。gfxCardStatusというユーティリティが良いでしょう。Google ChromeやTwitterアプリなどはデフォルトでNVIDIAの高性能GPUを使用するので、Intel統合グラフィックスを 利用するにはアプリケーションを終了する必要があることに注意して下さい。私はこれで切り替えてからView Debuggingしたら見事に動作しました。

gfxCardStatusを起動するとメニューバーに常駐するので、以下のように統合グラフィックスを固定で使用するように指定します。この際、高性能GPUで動作しているアプリケーションが存在するとエラーダイアログが表示され、対象のアプリケーションを教えてくれます。
Xcode6でView Debuggingを起動(上段のキャプチャ)。グリグリ動きます(下段のキャプチャ)

あ〜、新しいマシン欲しいな〜。

0 件のコメント :

コメントを投稿