Skip to content

UE4_23で適用される修正でFTickableGameObject継承クラスをグローバル変数として宣言していると落ちる問題について(Switch) #10

@yukinariooka

Description

@yukinariooka

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

UE4.23以降でFTickableGameObjectクラスを
継承したクラスをグローバル変数として宣言していると
クラッシュする問題がありまして、
SpriteStudioの条件を満たすコードにつきまして、
対処方法を質問させて頂ければと思います。

(現時点で、SpriteStudioはUE4.22までしか対応していないとは思うのですが、
不具合修正のために部分的にUE4.23の対応を入れたい箇所がありまして、質問させて頂きました。
バージョンは右記の通りです。SpriteStudio6.uplugin⇒VersionName" : "1.3.2")

UE4.22.Xまでのバージョンで、Switchで
TickからFTickableGameObject継承クラスをAsyncLoadすると
クラッシュする不具合がありまして、UDNで質問をしておりました。
(UDN上では具体的に挙げていないのですが、USsPlayerWidgetを使用している
WidgetBlueprintをAsyncLoadすると落ちる問題でした。)
"https://udn.unrealengine.com/questions/510304/tickからftickablegameobject継承クラスをasyncloadするとクラッシュする.html"

UDNではUE4.23でこの不具合は修正され、
以下のチェンジリストで修正しているとご回答いただきました。

//UE4/Dev-Coreストリームの
#6573248
#6809956

ですが、上記修正を適用したところ、グローバル変数
FSsOffScreenRenderDestroyer GSs6OffScreenRenderDestroyer; ◆SsRenderOffScreen.cpp
の宣言でクラッシュする問題が発生してしまいました。

恐らく、FTickableGameObjectのコンストラクタで、
GSs6OffScreenRenderDestroyerのコンストラクタが呼ばれる時点では未初期化の
static宣言されたAllocatorが使われるため、
クラッシュしてしまう現象が発生していると考えております。

〇クラッシュ時のコールスタック
 	アプリ名-Switch-DebugGame.nss!LockFreeLinkAllocator_TLSCache::Pop() Line 136 (0x9F92BC8)	C++
 	アプリ名-Switch-DebugGame.nss!FTickableGameObject::FTickableGameObject() Line 74 (0xCD82CB0)	C++
>	アプリ名-Switch-DebugGame.nss!FSsOffScreenRenderDestroyer::FSsOffScreenRenderDestroyer() Line 18 (0x83B6010)	C++
 	アプリ名-Switch-DebugGame.nss!__cxx_global_var_init.292() Line 55 (0x83A91CC)	C++
 	アプリ名-Switch-DebugGame.nss!_GLOBAL__sub_I_Module.SpriteStudio6.cpp() Line 96 (0x83A9A7C)	C++
 	アプリ名-Switch-DebugGame.nss!__cxx_global_array_dtor.64() Line 685 (0x800D150)	C++
 	nnrtld.nss! (0x8000858)	Unknown
 	nnSdk.nss!nn::init::Start (0x1BC67424)	Unknown
 	nnrtld.nss! (0x80000BC)	Unknown

こちらの問題について、どのように修正したらよいか、
ご教授いただけませんでしょうか?

ご確認の程、宜しくお願い致します。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions