#ios #crash #unreal-engine4
#iOS #сбой #unreal-engine4
Вопрос:
Мое демонстрационное приложение UnrealEngine4 для ios вылетает сразу после запуска. В то же время сборка Android работает нормально. Вот журнал сбоев:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Region Info: 0 is not in any region. Bytes before following region: 4366614528
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 0000000104454000-000000010a1f0000 [ 93.6M] r-x/r-x SM=COW ...podealUE4Demo
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [5038]
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 UE4Demo 0x0000000106081624 FOutputDevice::LogfImpl 29546020 (char16_t const*, ...) 204
1 UE4Demo 0x00000001060815b8 FOutputDevice::LogfImpl 29545912 (char16_t const*, ...) 96
2 UE4Demo 0x0000000105feff88 FDebug::AssertFailed 28950408 (char const*, char const*, int, char16_t const*, ...) 312
3 UE4Demo 0x0000000105ed5eec FGenericPlatformTime::GetSecondsPerCycle64 27795180 () 244
4 UE4Demo 0x0000000105f17c4c FThreadHeartBeat::Get 28064844 () 464
5 UE4Demo 0x0000000106009bfc FDebug::EnsureFailed 29055996 (char const*, char const*, int, char16_t const*, int) 384
6 UE4Demo 0x000000010600a288 FDebug::OptionallyLogFormattedEnsureMessageReturningFalseImpl 29057672 (bool, char const*, char const*, int, char16_t const*, ...) 116
7 UE4Demo 0x0000000105ef1780 LLMMap<PointerKey, unsigned int, ELLMTag>::Remove 27907968 (PointerKey constamp;) 464
8 UE4Demo 0x0000000105eefae0 FLLMTracker::TrackFree 27900640 (void const*, ELLMTracker, ELLMAllocType) 112
9 UE4Demo 0x0000000105f1c49c FMemory::Free 28083356 (void*) 200
10 CFNetwork 0x00000001bb945ce0 XTubeManager::~XTubeManager 204000 () 56
11 CFNetwork 0x00000001bb945c28 XTubeManager::~XTubeManager 203816 () 12
12 CFNetwork 0x00000001bb920300 -[__NSURLSessionLocal dealloc] 48
13 libobjc.A.dylib 0x00000001ba565b9c (anonymous namespace)::AutoreleasePoolPage::pop 129948 (void*) 672
14 libobjc.A.dylib 0x00000001ba54e220 call_load_methods 732
15 libobjc.A.dylib 0x00000001ba54fe54 load_images 180
16 dyld 0x000000010e54e390 dyld::notifySingle 9104 (dyld_image_states, ImageLoader const*, ImageLoader::InitializerTimingList*) 444
17 dyld 0x000000010e560314 ImageLoader::recursiveInitialization 82708 (ImageLoader::LinkContext constamp;, unsigned int, char const*, ImageLoader::InitializerTimingListamp;, ImageLoader::UninitedUpwardsamp;) 440
18 dyld 0x000000010e55f370 ImageLoader::processInitializers 78704 (ImageLoader::LinkContext constamp;, unsigned int, ImageLoader::InitializerTimingListamp;, ImageLoader::UninitedUpwardsamp;) 136
19 dyld 0x000000010e55f42c ImageLoader::runInitializers 78892 (ImageLoader::LinkContext constamp;, ImageLoader::InitializerTimingListamp;) 84
20 dyld 0x000000010e54e6d8 dyld::initializeMainExecutable 9944 () 220
21 dyld 0x000000010e5532a0 dyld::_main 29344 (macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) 4304
22 dyld 0x000000010e54d044 _dyld_start 68
Единственное, что я делаю при запуске, это показ виджета меню (который отлично работает в редакторе и Android).
Как я понимаю из журнала, основная проблема находится за пределами моего кода. Похоже, что FMemory::Free и другие вещи — это просто сервисные процессы после сбоя. И я почти уверен, что в стеке вызовов нет моего кода.
Ответ №1:
Это флаг -ObjC. У меня есть этот флаг в настройках проекта UE4, но, похоже, эти настройки не влияют на проект XCode. По крайней мере, для UE4.21.2.
Ответ №2:
Я нашел решение, которое сработало для меня:
Системные настройки
Батарея
Нажмите «Батарея» на левой боковой панели
Снимите флажок «Автоматическое переключение графики»
После повторного запуска epic games launcher у меня все заработало и больше не зависало.