FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Unity »【Unity】SymGetSymFromAddr64, GetLastError: '無効なアドレスにアクセスしようとしています。' と出たら…

【Unity】SymGetSymFromAddr64, GetLastError: '無効なアドレスにアクセスしようとしています。' と出たら…  



●Unity 2019 LTS が公開された


 現在メインで使っている Unity2019.2.21f1 が2月以降アップデートが止まってしまったので(これもコロナの影響?)、ちょっと試しに Unity 2019 LTS (4.0) を入れてみた。

 まぁ今のところ、Unity2019.3.x 以降にするとアプリ起動時の解像度設定やゲームパッドの入力設定のダイアログが無くなってしまうので、本格的にアップグレードできないのだが(まだ公式からも代替方法が提示されてないので、自前実装する必要がある)、それ以外にも Android のネイティブ構成なども変更されているので、プラグイン関係の不具合も調査しないといけないしね。ちょっと Unity2019.3.x 以降へのアップグレードは敷居が高い。

【Unity】Unity2019.3 で Android / iOS ネイティブの構成が変わるらしい

(※) Unity 2019.4.0f1 (LTS) / Windows10(x64) で確認



 しかし、それとは別にアプリをビルドして動かしてみたら、いきなりクラッシュした。そして、エラーログを見てみると

ERROR: SymGetSymFromAddr64, GetLastError: '無効なアドレスにアクセスしようとしています。
' (Address: 00007FF8367A8E5B)
※Address は色々出る

としかない。

 ちなみに、エラーログは、
C:\Users\{UserName}\AppData\Local\Temp\{CompanyName}\{ApplicationName}\Crashes\Crash_{日時}
に出る。
※古い Unity バージョンでは「C:\Users\{UserName}\AppData\{CompanyName}\{ApplicationName}」に出る

 よくわからないのでググってみたが、結論から言うとこのエラーは、
「クラッシュハンドラーがコードがクラッシュした場所を特定できなかったことを意味します」
だそうだ。つまり「原因不明」

U5.3 - ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.'

 実際この時、私も原因不明のクラッシュで手の付けようが無かったのだが(フォーラムを見てみると、それぞれ全く別の原因で出ていると推測できる)、色々操作しているうちに、「あるプレファブを Instanciate するとクラッシュする」ことに気づいた。そしてそのプレファブを徹底的に調べてみたところ、「あるマテリアルを使うとクラッシュする」ところまで突き止めた。

 しかし、このマテリアルは特別なものではなく、同じマテリアルで色違いなどではクラッシュしない。また、Unity2019.3.x で試してみてもクラッシュしない(Unity2019.2.x はもとよりクラッシュしない)。他にも色々パラメタを変えたり、クラッシュしたものと値をあわせたりしてみたが、結局最後まで原因不明だった…。ちなみにエディタ上ではエラーも出ず、クラッシュもしない。アプリとしてランタイム時にだけクラッシュするので、ビルドしたバイナリがバグっているとしか思えない(少なくとも手動で直せるものではない)

 まぁ、これまでも初期のバージョンは色々とやっかいなバグを持っていることも多いので、とりあえず、Unity2019.4.0f1 は使わない方が無難だろう(特に市販アプリでは)。このときはたまたまわかりやすいクラッシュだったので良いが、使う頻度が低いプレファブだったり、潜在的に引き起こされるクラッシュだったりしたら、見つけることは超絶困難なことになる(そして対処法もない)。

 ちなみにこのクラッシュを特定した方法は、とても面倒だがやり方は簡単だ。それは「あやしいと思ったヒエラルキー内のオブジェクトから1つずつ削除して、クラッシュしなくなったら、最後のオブジェクトが原因」だ。これは本当に最後の手段(笑)。しかもそのプレファブに内包しているオブジェクトは大量にあったため、かなり大変だった…(全オブジェクトの半分ずつ消していくのも良い。二分探索みたいな考え方)。超アナログな方法だが、コードのバグも同じ方法で見つけることもできる。どうにもならないときのただの力技だけどね(笑)。





(関連記事)
【Unity】IncrementalCompiler でのエラー:Unloading broken assembly Packages/com.unity.incrementalcompiler/Editor/Plugins/Unity.PureCSharpTests.dll, this assembly can cause crashes in the runtime
【Unity】Unity2018.3.2 にアップグレードすると見た目がおかしくなることがある
【Unity】Unity2019 の StandardShader の処理が少し変わったらしいよ
【Unity】【Android】2019.2.0 でパッケージ名(Bundle Identifer)でアンダーバーが使えない
【Unity】【Android】Unity2019 へのアップグレードの問題点 メモ
【Unity】EventTrigger のコールバック引数変わった?
【Unity】Unity2018 でビルドエラー「CommandInvokationFailure: Gradle build failed.」が出る


関連記事
スポンサーサイト



category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityトラブルシューティング 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/355-16062cc1
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR