Edited at

Assertion failed on expression: 'success && actual == (UInt64)size'

More than 1 year has passed since last update.

いつものようにJenkinsでUnityアプリをビルドしていると、こんなエラーが。

Compiled shader 'TMPro/Distance Field (Surface)' in 18.91s

gles (total internal programs: 90, unique: 50)
gles3 (total internal programs: 90, unique: 71)
Assertion failed on expression: 'success && actual == (UInt64)size'

当該のシェーダーを見ても問題はないどころか、そもそもこんなassertを書いている箇所はありません。

…で、ざっくり言うと、

PCのハードディスクがいっぱいになった

が原因です。

調べたところ、たまたまこのシェーダーをコンパイルした瞬間にハードディスクがいっぱいになり、ファイルが書き込めず、想定と実際のファイルサイズが違ってしまったのでビルドスクリプトのassertで止まった、ということのようです。

特に自動ビルドPCには過去の成果物ファイルがたまったりしてHDDがいっぱいになりがちで、かつ、普段はログインしないPCなので確認がおろそかになります。注意しましょう。イマドキ500GB程度ではこころもとないですね…。

なお、Windowsで出力されるファイルが2GBを超えた場合などにも同じエラーが出ることがあったようなんですが、これはUnity5.3.0で解消されているようです。

[BUILDING] WINDOWS STANDALONE NOT BUILDABLE WHEN SHAREDASSETS FILE IS LARGER THAN 2GB

https://issuetracker.unity3d.com/issues/building-windows-standalone-not-buildable-when-sharedassets-file-is-larger-than-2gb