Lv.1

Godot 4.52026-11-07 / Godot 4.5・Windows(このPC)。実機はiPhoneでの終了を確認中(公開日 2026-11-10)

Godot 4.5のiPhoneアプリが終了時に落ちた。クラッシュログをAIに読ませて原因を絞った記録

何が起きたか

TestFlightに出したビルド(1.0(5))で、アプリを終了すると落ちる、という報告が出ました。起動中は普通に動きます。落ちるのは終わるときだけでした。

クラッシュログをAIに読ませた

実機のクラッシュログ(2026-11-07 20:45に読みました)で、落ちた所の呼び出しの並びは次のとおりです。

  1. applicationWillTerminate
  2. apple_embedded_finish
  3. Main::cleanup
  4. GDScriptLanguage::finish
  5. staticな変数の解放
  6. 自分自身を持つラムダ
  7. UpdatableFuncPtr のmutex

終了の後片付けの途中で、ラムダが自分を持ったまま解放されて落ちている形です。ここまでは読めましたが、これが原因だと断定できる所までは確かめていません。

調べたこと

Godot 4.5の公式ソースと、関連するissue(#123712、#122899、#119857)を読みました。4.5のまま使える安全な「後片付けを省く方法」は見つかりませんでした。強制的に終了する案、メソッドを差し替える案、Godotの版を変える案は使わないことにしました。

直した所(1.0(6))

直した所内容
UIと広告の持ち方値を持つラムダをやめ、普通のメソッドのCallableにした
広告SDKの保持MobileAdsとUMPのstatic保持とsignalを、終了のときに外した
終了の経路WM_CLOSEと_exit_treeから、何度呼んでも同じになる終了処理を呼ぶ

対象の入力は全部で348箇所を点検しました。

試験の結果(Windows、Godot 4.5)

起動、編集、保存、読み戻し、抽選、終了までを、広告なしで50回、模擬広告ありで50回動かしました。クラッシュは0、スクリプトエラーも0で、75個のテストが通りました。

最初の100回の試験は、自分の保存先のフォルダ作成ミスで失敗しました。これは試験の側の間違いで、直してからやり直しています。

同じ症状は別のゲームのクラウドビルドでも出ました。書き出しが終わったあとにGodotを終了すると exit -6(Pure virtual function called!)で止まる、というものです(2026-11-07 21:21)。

未検証

未検証:iPhone実機でクラッシュが直ったかどうかは、まだ言えません。1.0(7)でタスクキルしたときは落ちた表示が出ませんでしたが、何回試したかの記録がありません。複数回の終了を確かめるまでは「直った」と書きません。
実績 バグ発見 を手に入れました