Game crashes with iOS 26 Beta

Hi everybody!

I see our (released) game started crashing on devices running the iOS 26 public beta. I know that beta OS versions can be unstable, but we want to be prepared in case we need to change things on our end. We are using a source build of Unreal 5.5.

The crash happens immediately at startup and the crash dump points to some regex functionality and the underlying memory allocation.

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: SIGNAL 6 Abort trap: 6
Terminating Process: <omitted> [4606]

Triggered by Thread:  0


Thread 0 Crashed:
0   libsystem_kernel.dylib        	0x00000001ec7e30cc __pthread_kill + 8 (:-1)
1   libsystem_pthread.dylib       	0x0000000226e527e8 pthread_kill + 268 (pthread.c:1721)
2   libsystem_c.dylib             	0x000000019f476f1c abort + 124 (abort.c:122)
3   libc++abi.dylib               	0x0000000226d73808 __abort_message + 132 (abort_message.cpp:66)
4   libc++abi.dylib               	0x0000000226d777e8 __cxa_guard_acquire + 256 (cxa_guard.cpp:39)
5   <omitted>                        0x0000000100940dc8 FMemory::Malloc(unsigned long, unsigned int) + 4214216 (FMemory.inl:25)
6   libicucore.A.dylib            	0x00000001a1625118 uregex_open + 172 (uregex.cpp:127)
7   Foundation                    	0x0000000195f6ede8 -[NSRegularExpression initWithPattern:options:error:] + 308 (NSRegularExpression.m:132)
8   Foundation                    	0x0000000195f6158c -[NSString(NSRegularExpressionSupport) _stringByReplacingOccurrencesOfRegularExpressionPattern:withTemplate:options:range:] + 164 (NSStringRegex.m:57)
9   <omitted>      					0x00000001009d7198 FIOSPlatformMisc::IsEntitlementEnabled(char const*) + 4829592 (IOSPlatformMisc.cpp:1546)
10  <omitted>      					0x00000001008b9120 FApplePlatformMemory::BaseAllocator() + 3658016 (ApplePlatformMemory.cpp:355)
11  <omitted>      					0x0000000100947c30 FMemory_GCreateMalloc_ThreadUnsafe() + 4242480 (UnrealMemory.cpp:346)
12  <omitted>      					0x0000000100940de0 FMemory::Malloc(unsigned long, unsigned int) + 4214240 (FMemory.inl:25)
13  MLAssetIO                     	0x00000001f56c5258 google::protobuf::internal::OnShutdownRun(void (*)(void const*), void const*) + 372 (message_lite.cc:575)
14  MLAssetIO                     	0x00000001f56c5090 _GLOBAL__I_000102 + 80 (generated_message_util.cc:0)
15  dyld                          	0x0000000193dea428 invocation function for block in dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 444 (Loader.cpp:2540)
16  dyld                          	0x0000000193dea6ac invocation function for block in dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const*) const + 324 (MachOAnalyzer.cpp:2443)
17  dyld                          	0x0000000193dd2d34 invocation function for block in mach_o::Header::forEachSection(void (mach_o::Header::SectionInfo const&, bool&) block_pointer) const + 312 (Header.cpp:2550)
18  dyld                          	0x0000000193dcf7a4 mach_o::Header::forEachLoadCommand(void (load_command const*, bool&) block_pointer) const + 208 (Header.cpp:1073)
19  dyld                          	0x0000000193dd2ecc mach_o::Header::forEachSection(void (mach_o::Header::SectionInfo const&, bool&) block_pointer) const + 124 (Header.cpp:2535)
20  dyld                          	0x0000000193dead4c dyld3::MachOAnalyzer::forEachInitializer(Diagnostics&, dyld3::MachOAnalyzer::VMAddrConverter const&, void (unsigned int) block_pointer, void const*) const + 516 (MachOAnalyzer.cpp:2409)
21  dyld                          	0x0000000193deaea4 dyld4::Loader::findAndRunAllInitializers(dyld4::RuntimeState&) const + 172 (Loader.cpp:2532)
22  dyld                          	0x0000000193debe8c dyld4::PrebuiltLoader::runInitializers(dyld4::RuntimeState&) const + 44 (PrebuiltLoader.cpp:937)
23  dyld                          	0x0000000193deca88 dyld4::Loader::runInitializersBottomUp(dyld4::RuntimeState&, dyld3::Array<dyld4::Loader const*>&, dyld3::Array<dyld4::Loader const*>&) const + 308 (Loader.cpp:2607)
24  dyld                          	0x0000000193deca28 dyld4::Loader::runInitializersBottomUp(dyld4::RuntimeState&, dyld3::Array<dyld4::Loader const*>&, dyld3::Array<dyld4::Loader const*>&) const + 212 (Loader.cpp:2597)
30  dyld                          	0x0000000193dec884 dyld4::Loader::runInitializersBottomUpPlusUpwardLinks(dyld4::RuntimeState&) const::$_0::operator()() const + 180 (Loader.cpp:2618)
31  dyld                          	0x0000000193dec77c dyld4::Loader::runInitializersBottomUpPlusUpwardLinks(dyld4::RuntimeState&) const + 716 (Loader.cpp:2614)
32  dyld                          	0x0000000193dea828 dyld4::APIs::runAllInitializersForMain() + 300 (DyldAPIs.cpp:4063)
33  dyld                          	0x0000000193dde184 dyld4::prepare(dyld4::APIs&, mach_o::Header const*) + 3232 (dyldMain.cpp:998)
34  dyld                          	0x0000000193dcdac8 start + 6252 (dyldMain.cpp:1453)

Anyone else seeing issues with Unreal on iOS 26?

Thanks,
Bernie

Checking the callstack again, it looks like a deadlock causes this crash. I tried disabling the entitlements check inside FIOSPlatformMisc::IsEntitlementEnabled and this makes the game start properly.

So now I’ll try to find the proper fix for this.

Alright, so the proper fix is to cherry-pick this commit that addresses changes in iOS 26 and ensures the engine allocation initialization works.

https://github.com/EpicGames/UnrealEngine/commit/9937d9f9ccb544bac6ff7db819c3930f224206a8

1 Like

I believe I’m getting this problem in my UE5.4 app for iOS.
I’m having a bit of trouble moving this commit into 5.4.

And I’m wondering if this issue would affect all apps for iOS26 or would only affect the app if it was using some regex somewhere in the code?

in other words, if i were able to remove the regex expressions, would this still be an issue? Where the issue is located would seem to indicate that it would affect all app for ios26.
However, if this was an issue that affected all apps for iOS 26, it seems like there would be more posts about it…

thx-e