Assertion failed on expression: ‘ShouldRunBehaviour()’

Unity2019.4.25

ある日突然発生しました。頑張って発生原因を探していくと とあるコンポーネントのStart関数にたどり着きました

Errorのスタックトレースをフルにしてみます。

Assertion failed on expression: 'ShouldRunBehaviour()'
 0x00007FF6E2AA815C (Unity) StackWalker::GetCurrentCallstack
 0x00007FF6E2AAC111 (Unity) StackWalker::ShowCallstack
 0x00007FF6E113B365 (Unity) GetStacktrace
 0x00007FF6E373971E (Unity) DebugStringToFile
 0x00007FF6E3739432 (Unity) AssertImplementation
 0x00007FF6E29E2D02 (Unity) MonoBehaviour::InvokeMethodOrCoroutineChecked
 0x00007FF6E29DE869 (Unity) MonoBehaviour::DelayedStartCall
 0x00007FF6E2077908 (Unity) DelayedCallManager::Update
 0x00007FF6E24B5FDF (Unity) InitPlayerLoopCallbacks'::2'::PostLateUpdateScriptRunDelayedDynamicFrameRateRegistrator::Forward
 0x00007FF6E249F868 (Unity) ExecutePlayerLoop
 0x00007FF6E249F93D (Unity) ExecutePlayerLoop
 0x00007FF6E24A4BCC (Unity) PlayerLoop
 0x00007FF6E07D3B7C (Unity) PlayerLoopController::UpdateScene
 0x00007FF6E07D1B18 (Unity) Application::TickTimer
 0x00007FF6E1160D75 (Unity) MainMessageLoop
 0x00007FF6E116AF58 (Unity) WinMain
 0x00007FF6E41FEC62 (Unity) __scrt_common_main_seh
 0x00007FF8B3E77034 (KERNEL32) BaseThreadInitThunk
 0x00007FF8B4902651 (ntdll) RtlUserThreadStart

なぜかPostLateUpdateがStartを呼んでいます…

適当に作ったクラスでStart()のスタックトレース出してみると

0x00007FF6E24B574F (Unity) InitPlayerLoopCallbacks'::2'::EarlyUpdateScriptRunDelayedStartupFrameRegistrator::Forward

正しそうです。

再現率100%でADF削除して作り直すとか、Reimport試しましたが直りません。

いったんStartやAwakeを使わないことで回避します…

気づいた点

AssetBundleからprefabをロードしたタイミングで発生します。AssetBundleにあるシーンにあるコンポーネントは正常です

VContainer.PostTickでprefabロードしてます

改善

Addressableを1.18.2から1.17.17に戻したら直りました