デバッグカメラ中の特定操作で例外が発生します。

いつもお世話になっております。

デバッグカメラ操作中にふとしたタイミングでクラッシュすることがあり、確認しましたところプログラム実装に問題があるようでしたので報告させていただきます。

■再現方法
※TemplateのFirst PersonExampleでの再現方法です。

  1. プロジェクトを開きPlayで開始します。
  2. コンソールコマンドToggleDebugCameraを入力しデバッグカメラを起動します。
  3. マウス左ボタンクリックやパッドLT+RT等でアクターを選択します。
  4. ターゲットのアクターが変わらないようにしてコンソールコマンドDestroyTargetで3.のアクターを削除します。
  5. GCが発生するまで待つか、コンソールコマンドObj GCを実行します。
  6. クラッシュします。

■原因
ADebugCameraHUD::PostRender()ではADebugCameraControllerの持つSelectedActorを参照して情報を表示するコードがあります。
このSelectedActorはデバッグカメラ中のマウスクリック等をトリガーとしてADebugCameraController::Select()で設定されますが、生ポインタで保持しているためGCのタイミングにおいて参照箇所で例外が発生してしまう事があるようです。
※これ以外にも同じソースコード内にGDebugSelectedComponentやGDebugSelectedActorなどいくつか生ポインタで保持されているものが存在しています。

弊社ローカル環境ではクラッシュしない様に対応を行っておりかつデバッグ機能ですので、すぐの修正は必要ありませんが将来的に修正を行って頂けますと幸いです。

よろしくお願いいたします。

お世話になります。

バグを報告してくれてありがとうございます。
再現が出来て、パッチを作成して、社内データベースに載せました!

ローカルでクラッシュしないように対応をしてくれたので不要だと思いますが、念のためここにもパッチを載せていただきます。
DebugCameraHUD.cpp用のパッチになります。
link text

Crash in Debug Camera (patch provided in comment !)

よろしくお願いします。

お世話になります。

はい、確かに、ログがいっぱい出力はいっぱい出てますね。
パッチを新しく作成したので、試してみて下さい。今回は問題ないはずです。ここでは再確認して問題はなっかったです。

よろしくお願いします。

link text

お世話になっております。

ご返答、Issueのご登録ありがとうございます。

頂いたパッチを適用して修正される事を確認しました。
しかし、デバッグカメラを起動するだけで以下の警告が毎フレーム出力されるようですのでご確認下さい。
LogUObjectBase: Warning: NULL object
(UObjectBase::IsValidLowLevel()でのnullptrチェックで出力されています。)

よろしくお願いいたします。

お世話になっております。

ログも出力されなくなり修正されている事を確認しました。
また、SelectedComponentのチェックも入れて下さいましてありがとうございました。

よろしくお願いいたします。