経緯
友人に自作アプリのレビューを依頼したかったのだが、彼はスマホはiOSでPCは持ち合わせていないとのこと。
しゃあなしでWebGLのビルドをすることに。
ぱぱっとサーバーアップロードを終えてレビューしてもらおうと思ったらまさかのエラー
エラーの内容は以下の通り
Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output:
Assertion failed: *task.currp, file C:\build\output\Unity-Technologies\emscripten-builder\emsdk\binaryen\main\src\wasm-traversal.h, line 313
emcc: error: '*****/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/binaryen\bin\wasm-opt --strip-dwarf --post-emscripten -O2 --low-memory-unused --zero-filled-memory --strip-debug --strip-producers Library/Bee/artifacts/WebGL/build/debug_WebGL_wasm/build.wasm -o Library/Bee/artifacts/WebGL/build/debug_WebGL_wasm/build.wasm --mvp-features' failed (returned 3221226505)
環境
OS | Windows11 |
Unity | 6000.0.41f1 |
CPU | i7-13700KF |
結論から
原因はCPUでした。
詳しいことはIntelCPU問題とかでググってください。
対応するBIOSのアップデートを行えば解決する(はず)
解決までの道のり
試してみたこと
1. Libraryフォルダ等の一時ファイルの削除→リビルド
これはよくある「おまじない」みたいなものだと思うのでとりあえずやってみる。
再起動後一発目のビルドログが変わったりすることもあるが数回やっているうちにタイトルのエラーに戻るため特に効果なし
2. エディターのビルドログを確認
これも定番といえば定番。かなりの量があるため読む気が失せるのだけども、なんとか目を通す。
Clang関連のエラーのようでコンソールに表示されていたWebAssemblyのエラーとは少し毛色が違いそうだったので少し違和感。もう少し掘り下げてみることに(後述)
emcc: error: ~*****~ Library/Bee/artifacts/WebGL/il2cpp/release_WebGL_wasm/2sb31pli15pb.o' failed (returned 1)
*** Tundra build failed (6.83 seconds), 220 items updated, 214 evaluated
ExitCode: 3 Duration: 6s842ms
Building Library\Bee\artifacts\WebGL\il2cpp\release_WebGL_wasm\2sb31pli15pb.o failed with output:
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
~中略~
clang: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 14.0.1 (https://github-com-cache.bf.unity3d.com/Unity-Technologies/llvm-project
3. 別PCでの動作確認
もともとビルドをしようとしていたPCとは別に出先でも作業ができるようにと保有していたノートPCを引っ張り出してビルドを試してみることに。 OSはWindows11でUnityのバージョンも合わせて実行したのでハード面以外の環境はほぼ同じ。結果としてビルドが通ったのでハード関連に問題があるだろうというところまでは推測できた。
4. バージョンを変える
Unity6のバグかとも思ったのでバージョンをかなり古いものに変更(2022.3.XXとか)
これもだめ。エラーの出方もほぼ同じ。
ハード関連の問題でClangのエラー?
試行錯誤の結果を考えるとClangまわりはかなり怪しそう。ハードとのあれこれもありそうだし調べ方を変えてみた。
これまでのググり方としてはエラーメッセージでの検索を徹底していたがClangがきな臭いとのことで、WebGL Unity Clang Error とかで検索をかけてみることに。
それっぽいのがヒットした
要約するとセーフモードで起動するとビルドできた。CPUの電圧をBIOSで下げたらいい感じになった。
というもの。
CPUの電圧下げるのは何か嫌だなーと思いつつセーフモードでの起動は試してみようと思い、ビルドまでしてみると見事にビルドが成功。
そうなるとCPUがかなりきな臭いのだが電圧下げるのは少し抵抗があった。
そこでぼーっと物思いにふけっていたところでふと「CPU 電圧」でIntel CPU問題のことを思い出した。
そういえばそんなものもあったなと少し検索をかけてみると、自分が使用しているCPUががっつり該当していることも明らかに(忘れてた)
そうと分かれば早速BIOSのアップデートを実行→Unityで再度ビルドを試してみる。
通った。
なんてこったい。
「まぁ影響でてないしアップデートめんどいからいいかぁ」などと考えていた昔の自分を殴りたい。
さいごに
ハードウェア系の問題は早めに解決しよう。寿命も縮みかねないので。