【小ネタ】MacでUnity2019.4LTSがMacごと落ちたりフリーズする場合の解決例

# はじめに

今までUnity2018.2を使用していたのですがUnity2019.4LTSに更新したら5分に1回くらいMacごと落ちるようになりました:sob:
さっき解決したので解決方法を残しておきます。

動作環境

- macOS 10.15.5
- Unity2019.4.1f1

## Unity2019.4で5分に1回くらいMacが落ちる問題

Unity2019.4でなにかボタンを押した際やマウスカーソルを動かした時にMacがストンと落ちました。
再起動の際にクラッシュ内容が表示されるのでこの内容で調査しました。

```
panic(cpu 0 caller 0xffffff800964aa3a): Kernel trap at 0xffffff7f8bccf24f, type 14=page fault, registers:
CR0: 0x000000008001003b, CR2: 0x0000000000000000, CR3: 0x000000000d9b6000, CR4: 0x00000000003626e0
RAX: 0x000000000c000304, RBX: 0xffffff80265e2800, RCX: 0x0000000000000001, RDX: 0x0000000000000000
RSP: 0xffffff8117a8bdf0, RBP: 0xffffff8117a8bdf0, RSI: 0x0000000000000000, RDI: 0xffffff803c10c600
R8:  0x0000000000000001, R9:  0xffffff8117a8bc34, R10: 0x0000000000002960, R11: 0x0000000000002960
R12: 0xffffff80265e2800, R13: 0x0000000000000004, R14: 0x0000000000000001, R15: 0xffffff7f8bd2a568
RFL: 0x0000000000010246, RIP: 0xffffff7f8bccf24f, CS:  0x0000000000000008, SS:  0x0000000000000010
Fault CR2: 0x0000000000000000, Error code: 0x0000000000000000, Fault CPU: 0x0, PL: 0, VF: 1

Backtrace (CPU 0), Frame : Return Address
:
0xffffff8117a8bfa0 : 0xffffff80094c513e 
      Kernel Extensions in backtrace:
         com.apple.iokit.IOAcceleratorFamily2(438.5.4)[D695D9DA-7C20-35D6-910F-E7A332A0F515]@0xffffff7f8bcab000->0xffffff7f8bd6ffff
            dependency: com.apple.driver.AppleMobileFileIntegrity(1.0.5)[0425E074-601A-3487-A54F-1E675D065186]@0xffffff7f8a1f9000
            dependency: com.apple.iokit.IOPCIFamily(2.9)[3C56BB73-D149-3E84-A2EB-DF806779B96C]@0xffffff7f8a2b3000
            dependency: com.apple.iokit.IOSurface(269.11)[F1E7389D-2807-3C5D-8A7F-5422542E867F]@0xffffff7f8a6a6000
            dependency: com.apple.iokit.IOGraphicsFamily(576.1)[B1C0006F-E1F5-37D9-9548-5F918E92B422]@0xffffff7f8a5bc000
            dependency: com.apple.iokit.IOReportFamily(47)[1FB49168-0280-3F04-A99A-F830C915E994]@0xffffff7f89e9f000
         com.apple.driver.AppleIntelBDWGraphics(14.0.6)[6139D437-2098-316E-967B-4692BAA82C5B]@0xffffff7f8c19f000->0xffffff7f8c238fff
            dependency: com.apple.iokit.IOPCIFamily(2.9)[3C56BB73-D149-3E84-A2EB-DF806779B96C]@0xffffff7f8a2b3000
            dependency: com.apple.iokit.IOSurface(269.11)[F1E7389D-2807-3C5D-8A7F-5422542E867F]@0xffffff7f8a6a6000
            dependency: com.apple.iokit.IOGraphicsFamily(576.1)[B1C0006F-E1F5-37D9-9548-5F918E92B422]@0xffffff7f8a5bc000
            dependency: com.apple.iokit.IOAcceleratorFamily2(438.5.4)[D695D9DA-7C20-35D6-910F-E7A332A0F515]@0xffffff7f8bcab000

BSD process name corresponding to current thread: kernel_task
```

カーネルがパニックしているようです..。

### 解決方法: MetalサポートをONにする

以下forumに回答ありました。
https://forum.unity.com/threads/unity-editor-crashes-macos.739535/

<img width="640" alt="スクリーンショット 2020-07-27 8.18.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/4b431ce0-4ad7-b583-ab0a-a28318d5a450.png">

Project SettingからMetalサポートをONにすると本エラーが防げるとのこと。
古めのMacで発生するそうです。
上記設定後にクラッシュすることはまだありません。

## Unity2019.4でPlayボタンを押したときにUnityがフリーズする問題

上の問題が解決され一件落着!..と思ったのですがプロジェクトによってはUnity Editorで再生ボタンを押すとローディングがくるくるまわりそのままフリーズしました。

<img width="640" alt="スクリーンショット 2020-07-27 8.41.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/63f7ab75-04ba-fc3d-0605-8ccf7970c9f1.png">

### 解決方法: 旧Firebase SDKを更新する

この問題は100%発生するプロジェクトと全く発生しないプロジェクトがあったので各ライブラリを確認することにしました。
調査の結果、旧Firebase SDKを使用しているプロジェクトで発生していることがわかりました。

Firebaseのドキュメントにはknown-issuesとして4つの問題が挙げられています。
Unity2020特有のIssueもあるので一読するのが良さそうです。
日本語ドキュメントだと表示されないので言語設定を英語にする必要があります。

https://firebase.google.com/docs/unity/setup#known-issues

- .NET compatibility when using Unity 2017.x and later
- Unity 2017.2 networking
- Missing Firebase Android config file in Unity 2020.
- Installation Conflict when using Unity Package Manager

Firebase SDK更新後、再生ボタンを押してもフリーズしないようになりました。