This bug both happen in 4.16 & 4.17 I tested,
And I fixed the crash by doing following step:
Copy all files in
UE_4.17\Engine\Plugins\Runtime\HTTPChunkInstaller\Content\Localization\HTTPChunkInstaller\en
to replace files in
UE_4.17\Engine\Plugins\Runtime\HTTPChunkInstaller\Content\Localization\HTTPChunkInstaller\zh-Hans
Copy all files in
UE_4.17\Engine\Plugins\Online\OnlineSubsystem\Content\Localization\OnlineSubsystem\en
to replace files in
UE_4.17\Engine\Plugins\Online\OnlineSubsystem\Content\Localization\OnlineSubsystem\zh-Hans
Copy all files in
UE_4.17\Engine\Plugins\Online\OnlineSubsystemUtils\Content\Localization\OnlineSubsystemUtils\en
to replace files in
UE_4.17\Engine\Plugins\Online\OnlineSubsystemUtils\Content\Localization\OnlineSubsystemUtils\zh-Hans
I think there should have some problem in those plugin’s zh-Hans .locres.
====================================================
Here is c++ call stack when I try to trace the crash in 4.16:
> vcruntime140.dll!memcpy() Line 135 Unknown
MyProject-Win64-DebugGame.exe!FSignedArchiveReader::Serialize(void * Data, __int64 Length) Line 411 C++
MyProject-Win64-DebugGame.exe!FPakReaderPolicy<FPakSimpleEncryption>::Serialize(__int64 DesiredPosition, void * V, __int64 Length) Line 725 C++
xxxxx-Win64-DebugGame.exe!FPakFileHandle<FPakReaderPolicy<FPakSimpleEncryption> >::Read(unsigned char * Destination, __int64 BytesToRead) Line 824 C++
MyProject-Win64-DebugGame.exe!FArchiveFileReaderGeneric::ReadLowLevel(unsigned char * Dest, __int64 CountToRead, __int64 & OutBytesRead) Line 642 C++
MyProject-Win64-DebugGame.exe!FArchiveFileReaderGeneric::InternalPrecache(__int64 PrecacheOffset, __int64 PrecacheSize) Line 690 C++
MyProject-Win64-DebugGame.exe!FArchiveFileReaderGeneric::Serialize(void * V, __int64 Length) Line 730 C++
MyProject-Win64-DebugGame.exe!operator<<(FArchive & Ar, TArray<FString,FDefaultAllocator> & A) Line 1109 C++
MyProject-Win64-DebugGame.exe!FTextLocalizationResource::LoadFromArchive(FArchive & Archive, const FString & LocalizationResourceIdentifier) Line 149 C++
MyProject-Win64-DebugGame.exe!FTextLocalizationResource::LoadFromFile(const FString & FilePath) Line 108 C++
MyProject-Win64-DebugGame.exe!FTextLocalizationResource::LoadFromDirectory(const FString & DirectoryPath) Line 94 C++
MyProject-Win64-DebugGame.exe!FTextLocalizationManager::LoadLocalizationResourcesForCulture(const FString & CultureName, const bool ShouldLoadEditor, const bool ShouldLoadGame) Line 763 C++
MyProject-Win64-DebugGame.exe!FTextLocalizationManager::OnCultureChanged() Line 578 C++
MyProject-Win64-DebugGame.exe!TBaseRawMethodDelegateInstance<0,FTextLocalizationManager,void __cdecl(void)>::ExecuteIfSafe() Line 648 C++
MyProject-Win64-DebugGame.exe!TBaseMulticastDelegate<void>::Broadcast() Line 937 C++
MyProject-Win64-DebugGame.exe!FInternationalization::SetCurrentCulture(const FString & InCultureName) Line 70 C++
In the function
FTextLocalizationResource::LoadFromArchive(FArchive& Archive, const FString& LocalizationResourceIdentifier)
Archive = {Filename=L"D:/MyProject/WindowsNoEditor/Engine/Plugins/Online/HTTPChunkInstaller/Content/Localization/HTTPChunkInstaller/zh-Hans/HTTPChunkInstaller.locres" …}